[英]Python import & packages: __init__.py file not fixing ModuleNotFoundError?
所以我閱讀了Packages文檔,並在每個 package 和父 package 中包含了 __init__.py 文件。 我的目錄看起來像這樣
sparro
__init__.py
api
__init__.py
sparrolib.py
schema
__init__.py
tsbuild.py
scripts
__init__.py
scrape_descriptors.py
utils
__init__.py
analytics.py
engine.py
utility.py
所以我嘗試將我的實用程序模塊導入到 scrape_descriptors.py 中
from sparro.utils import utility, engine
它失敗並給了我一個ModuleNotFoundError 。 我嘗試使用其他模塊,我遇到了同樣的問題。 我有什么誤解,我該如何糾正?
錯誤:
Traceback (most recent call last):
File "/Users/dominictarro/Documents/Sparro/sparro/scripts/scrape_descriptors.py", line 2, in <module>
from sparro.utils import utility, engine
ModuleNotFoundError: No module name 'sparro'
[shell_cmd: python -u "/Users/dominictarro/Documents/Sparro/sparro/scripts/scrape_descriptors.py"]
[dir: /Users/dominictarro/Documents/Sparro/sparro/scripts]
[path: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]
您需要將 package 的父目錄添加到 PYTHONPATH。
在 sublime 終端中運行以下命令:
export PYTHONPATH=$PYTHONPATH:/Users/dominictarro/Documents/Sparro/
使其永久研究如何為您的系統設置環境變量。 如果您正在運行 linux 或 macOS,那么您可以將命令添加到您的 .bashrc 文件(可能在此處 /Users/dominictarro/.bashrc)
您還可以查看如何通過 sublime 設置 PYTHONPATH。
或者,您需要在工作目錄為 /Users/dominictarro/Documents/Sparro/ 時調用代碼
您可以通過在此處創建一個文件(按照約定稱為 main.py)來導入和調用庫中的某些內容來做到這一點。
例如
from sparro.scripts.scrape_descriptors import run
if __name__ == '__main__':
run()
顯然需要一個名為 run in 的 function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.