Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 13, 2013 18:50:48

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Разница между импортами

>>> 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)

Офлайн

#2 Окт. 13, 2013 19:23:02

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Разница между импортами

Это связано с пространствами имен (namespace) в Питоне.
Во втором случае при импорте атрибуты модуля импортируются в локальное пространство имен автоматически.
В первом случае этого не происходит.

Почитайте о namespace и import.



Офлайн

#3 Окт. 13, 2013 19:25:05

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Разница между импортами

Чтобы посмотреть, что доступно в модуле без импорта в локальное пространство имен, можно использовать

dir(django)
Как видим, здесь действительно нет db



Офлайн

#4 Окт. 13, 2013 19:29:29

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Разница между импортами

Ну, и для полного закрепления, так сказать, разница между модулями и пакетами, об их устройстве и последовательности импорта из того и другого есть в документации.



Отредактировано Lexander (Окт. 13, 2013 19:29:49)

Офлайн

#5 Окт. 13, 2013 19:39:48

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Разница между импортами

Lexander
тут можно посты править. хотя ты вроде знаешь

Офлайн

#6 Окт. 13, 2013 20:25:24

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Разница между импортами

Они потом на почту приходят неправильно.
Поэтому на данный момент лучше добавить новый пост.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version