Форум сайта python.su
75
>>> import django >>> d = django.db Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'db' >>> from django import db as d Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/ihor/.virtualenvs/django/local/lib/python2.7/site-packages/django/db/__init__.py", line 11, in <module> if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES: File "/home/ihor/.virtualenvs/django/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ self._setup(name) File "/home/ihor/.virtualenvs/django/local/lib/python2.7/site-packages/django/conf/__init__.py", line 46, in _setup % (desc, ENVIRONMENT_VARIABLE)) django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Отредактировано Singularity (Окт. 13, 2013 18:51:07)
Офлайн
33
Это связано с пространствами имен (namespace) в Питоне.
Во втором случае при импорте атрибуты модуля импортируются в локальное пространство имен автоматически.
В первом случае этого не происходит.
Почитайте о namespace и import.
Офлайн
33
Чтобы посмотреть, что доступно в модуле без импорта в локальное пространство имен, можно использовать
dir(django)
Офлайн
33
Ну, и для полного закрепления, так сказать, разница между модулями и пакетами, об их устройстве и последовательности импорта из того и другого есть в документации.
Отредактировано Lexander (Окт. 13, 2013 19:29:49)
Офлайн
75
Lexander
тут можно посты править. хотя ты вроде знаешь
Офлайн
33
Они потом на почту приходят неправильно.
Поэтому на данный момент лучше добавить новый пост.
Офлайн