[英]Unable to import from root directory to subdirectory without modifying sys.path (Python 3.8)
首先讓我說,我已經閱讀了可能與此相關的其他 5 或 6 個 stackoverflow 問題,並且已經說過很多事情。 這是我發現的和嘗試過的:
“在其他導入之前執行sys.path.append(<root dir>)
。”
問題:這可行,但它違反了 PEP 標准做法,所以我寧願找到一個不需要修改sys.path
的解決方案。
“使用imp
庫找到你的模塊。”
問題:該答案中概述的解決方案已棄用,因為importlib
是新的imp
,即使在查看文檔后我也不確定如何使用importlib
。
“在您的根目錄中添加一個空的__init__.py
文件。”
問題:這不起作用。
這是我的文件結構:
Project/
├ subdir/
| └ script.py
├ __init__.py
└ module.py
(請注意,我將空的__init__.py
文件留在那里以備不時之需。)
module.py
導入到subdir/script.py
: module.py
的內容:
def func():
print('func was called')
subdir/script.py
的內容:
from module import func
func()
但是,當我在終端(在 Mac 上)運行python3 script.py
時,我收到以下錯誤消息:
Traceback (most recent call last):
File "script.py", line 1, in <module>
from module import func
ModuleNotFoundError: No module named 'module'
我將不勝感激不需要修改sys.path
的直接解決方案。
解決問題的最簡單方法可能是重組項目:
Project
├── script.py
└── module
├── __init__.py
└── module.py
我通過設置PYTHONPATH
解決了我的問題。 就我而言,它適用於此。
PYTHONPATH=<root dir> python3 subdir/script.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.