[英]how to properly import a module which need another module to run?
我遇到了一個名為no module named XX.
我的項目文件組織如下:
-------A.py
|
B-----__init__.py wrote: from .C import C
|
C.py
|
D -----__init__.py wrote: from .E import E
|
E.py
在 A.py 中,我需要從 C.py 導入 class C。 但是 class C 需要使用 class E(in E.py)來運行
在 A.py 中,我寫了import B.C
在 C.py 中,我寫了import DE
當我在 A.py 中運行測試時,它給出了錯誤: No module named 'D'
但是如果我測試 C.py,則完全沒有問題。
誰能告訴我為什么以及如何解決它?
當您嘗試運行A.py
時,它會失敗,因為 Python 解釋器(運行 Python 腳本的程序)找不到D
ZEFE90A8E604A7C840E88D03A67F6B7D8。
但是,當您運行C.py
時,解釋器確實找到了D
package。 這是因為您正在運行的腳本 ( C.py
) 與D
package 位於同一目錄/文件夾中。
Python Docs中的詳細解釋:
當導入名為
spam
的模塊時,解釋器首先搜索具有該名稱的內置模塊。 如果未找到,它會在變量sys.path
給出的目錄列表中搜索名為spam.py
的文件。sys.path
從這些位置初始化:
包含輸入腳本的目錄(或未指定文件時的當前目錄)。
PYTHONPATH(目錄名稱列表,語法與 shell 變量 PATH 相同)。
依賴於安裝的默認值(按照慣例,包括一個站點包目錄,由站點模塊處理)。
一個快速的解決方法是在C.py
中使用相對導入:
from .D import E
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.