В моем проекте Django у меня есть приложение под названием profile
, которое в основном содержит мой класс profile.models.UserProfile
для дополнительной информации о User
объектах (может показаться знакомым людям из Django).Теперь я поместил некоторый код инициализации в profile/__init__.py
(некоторые сигналы) и столкнулся с проблемой: Django говорит мне, что таблица с именем hotshot_profile
не была найдена.
После буквальных часов поиска,Я проследил проблему до импорта заказа.Запустив python -v manage.py test
Я обнаружил следующее:
import nose.plugins.prof # precompiled from /home/rassie/.virtualenvs/myproject/lib/python2.6/site-packages/nose/plugins/prof.pyc
import hotshot # directory /usr/lib64/python2.6/hotshot
import hotshot # precompiled from /usr/lib64/python2.6/hotshot/__init__.pyc
dlopen("/home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so", 2);
import _hotshot # dynamically loaded from /home/rassie/.virtualenvs/myproject/lib64/python2.6/lib-dynload/_hotshot.so
import hotshot.stats # from /usr/lib64/python2.6/hotshot/stats.py
import profile # directory /home/rassie/MyProject/apps/profile
import profile # precompiled from /home/rassie/MyProject/apps/profile/__init__.pyc
Так что мой бегун Nose импортирует nose.plugins.prof
(даже если этот плагин отключен), импортирует hotshot
, который пытается импортировать profile
,Однако profile
импортируется из моего проекта , в то время как его готовность должна была быть импортирована из системы Python.
Очевидно, мой собственный модуль profile
конфликтует с модулем системы profile
.Очевидно, я не могу исключить каждое имя модуля, поставляемое в комплекте с Python, из моего собственного программирования.Итак, вопрос в том, куда мне идти отсюда?Нужно ли создавать пространство имен myproject
для всех моих приложений?Будет ли Django работать с этим?
PS: Имя таблицы hotshot_profile
, похоже, происходит от еще одного, еще не полностью проанализированного конфликта имен с классом Profile
из pybb
, который я 'Я также использую в моем проекте.Но это выходит за рамки этого вопроса.