簡體   English   中英

Python 導入和包:__init__.py 文件未修復 ModuleNotFoundError?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM