我有一個Django的結構是這樣的(只顯示庫):全局/應用程序文件夾的lib導入在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
給我ImportError: cannot import name global_stuff
從進口的.lib 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
的作品,但我真的不希望使用項目名稱本身被卡住在im港口。
有沒有什麼辦法可以解決這個問題,而不是在導入中使用項目名稱,或者改變整個lib的想法。
或者是否有任何其他良好的做法來存儲代碼的主要部分?
您是否確保每個目錄都有一個'__init __。py'?你有沒有把「/ path/to/project」放到你的PYTHONPATH中? – rantanplan
是的,每個目錄都有一個__init__.py,並且sys.path中的第一個條目是項目目錄。 – xeor