Nameclash при импорте пакетов, в имени которых содержится слово «django»? - PullRequest
0 голосов
/ 24 мая 2011

У меня несколько странная проблема.Я решил переименовать всю ветвь моего пакета с

foo.bar.somemodule

на

foo.django.bar.somemodule

Проблема в том, что после того, как это сделано, я получаю следующую ошибку:

Traceback (most recent call last):
  File "/home/workspace/eclipse/foo/src/foo/manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named core.management

Если я сейчас верну имя на

foo.djangox.bar.somemodule

ЭТО РАБОТАЕТ!Обратите внимание, 'x' я добавил к слову django.

Кажется, что при использовании foo.django.bar.somemodule есть какое-то столкновение имен, но что дает?Они должны быть отделены от самого django.

Все импорты в моем коде имеют вид

from foo.django.bar.somemodule import someobject
import foo.django.bar.somemodule

edit: чтобы уточнить, что есть «x» во втором до последнего импорта

1 Ответ

1 голос
/ 24 мая 2011

Вы столкнулись с ситуацией, когда вы хотите выполнить абсолютный импорт , но ваша версия Python не выполняет их по умолчанию. Добавьте from __future__ import absolute_import в верхней части поврежденного файла, чтобы указать виртуальной машине Python активировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...