Я использую Django 1.2 pre-alpha и Python 2.4.Да, я знаю, но я застрял с этим.В настоящее время мы не можем выполнить обновление, и я все равно сомневаюсь, что это ответ.
У меня есть две библиотеки тегов шаблонов, foo
и bar
.Тем не менее, foo
также является именем пакета верхнего уровня, и это, случается, пакет bar
:
foo-1.2.3/
foo/
conf/
settings.py
templatetags/
bar.py
bar-4.5/
somepackage/
templatetags/
foo.py
Библиотека тегов bar.py
содержит следующую строку:
from foo.conf import settings
... и вы ожидаете, что он загрузит foo-1.2.3/foo/conf/settings.py
.
Но нет:
TemplateSyntaxError: 'bar' не является допустимым тегомбиблиотека: не удалось загрузить библиотеку шаблонов из django.templatetags.bar, нет модуля с именем conf
К сожалению, Django выполняет небольшую магию и связывает все библиотеки тегов шаблонов с django.templatetags.*
,Таким образом, bar
импортируется как django.templatetags.bar
, а когда он вызывает from foo.conf import settings
, он в итоге импортирует bar-4.5/somepackage/templatetags/foo.py
.Тьфу!
У вас есть идеи, как это исправить?
Я установил точку останова прямо перед импортом, и я подтвердил, что foo-1.2.3
находится в начале sys.path
, но ключевое слово import
все равно находит неправильное foo
.
Если это поможет, обратите внимание, что я могу изменить пакет foo-1.2.3
(поскольку он был проверен локальнои постепенно сокращается), но я отказываюсь изменять пакет bar-4.5
(поскольку это пакет с открытым исходным кодом, установленный в масштабе всей системы).