[英]How do I import something from a nested child directory with Python?
在我的主文件(根級別)中,我有:
from deepspeech2_utils import reduce_tensor, check_loss
我還有一個__init__.py
有:
from submodules.deepspeech2 import utils as deepspeech2_utils
我有一個看起來像這樣的目錄結構:
main.py
__init__.py
-submodules
-deepspeech2
-utils.py
但我收到一個錯誤:
from deepspeech2_utils import reduce_tensor, check_loss
ImportError: No module named deepspeech2_utils
我也試過:
from submodules.deepspeech2.utils import reduce_tensor, check_loss
但得到同樣的錯誤。
我究竟做錯了什么?
因此,目錄在 python 中被識別為模塊的方式是在這些目錄中存在__init__.py
文件。 這些__init__.py
文件不需要有代碼。 所以改變你的目錄結構看起來像這樣
root
main.py
__init__.py
submodules
__init__.py
deepspeech2
__init__.py
utils.py
現在完成此操作后, __init__.py
init__.py 中的導入語句(如果沒有上述目錄更改,則無法正常工作)具有 scope,它在main.py
中將不可見-具有不同的 scope。 為了實現您正在做的事情,將 main.py 中的導入語句更改為
from root.deepspeech2_utils import reduce_tensor, check_loss
除了命名空間的原因,我必須建議,不鼓勵在__init__.py
中導入,因為您的模塊的用戶可能只想從您的模塊/子模塊中導入特定的東西,而您在__init__.py
中的導入語句將迫使他們有更多的導入比他們想要的。 這是另一篇文章的答案,詳細討論了這些問題
您需要將所有子文件夾init .py 放入模塊中轉換此文件夾並導入此文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.