Django1.2プレアルファ版とPython2.4を使用しています。ええ、私は知っていますが、私はそれに固執しています。現時点ではアップグレードできません。とにかくそれが答えだとは思えません。
2つのテンプレートタグライブラリが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
ます(オープンソースパッケージであり、システム全体にインストールされているため)。