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ます(オープンソースパッケージであり、システム全体にインストールされているため)。