にインポートします。グローバル/アプリのlibフォルダには、私は(唯一のLIBSを示す)このようなDjangoの構造を持っているジャンゴ
project/lib/ # Global libraries that will be used cross apps
project/lib/global_stuff.py
project/apps/app1/lib/special_for_app1.py
project/apps/app2/lib/special_for_app2.py
いくつかのアプリはlibフォルダを持っていません。
from apps.app1.lib import special_for_app1
が正常に動作します。しかし、すでにローカルのlibフォルダを含んでいるフォルダの中にあるとき、どのようにグローバルなlibフォルダからインポートできますか? views.pyのアプリケーションの一つ上のファイルアプリを内側から
:
from lib import global_stuff
は.libファイルのインポートglobal_stuffから私に
をImportError: cannot import name global_stuff
を与えます
は私を与えるImportError: cannot import name global_stuff
from ..lib import global_stuff
は私にImportError: No module named lib
from ...lib import global_stuff
を与える作品私ValueError: Attempted relative import beyond toplevel package
from project.lib import global_stuff
を与えますが、私は実際にプロジェクト名自体を使用して立ち往生することにしたいいけません私の中でポート。
インポート時にプロジェクト名を使用したり、libアイデア全体を変更したりすることはできません。
やコードの主要な部分を格納するために、他の良い方法はありますか?
すべてのディレクトリに '__init __。py'があることを確認しましたか? PYTHONPATHに "/ path/to/project"を入れましたか? – rantanplan
はい、すべてのディレクトリには__init__.pyがあり、sys.pathの最初のエントリはプロジェクトディレクトリです。 – xeor