我正在使用 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
包(因为它是开源包并且已在系统范围内安装)。