[英]Python import package with and without it's namespace
我有一個名為sound
的軟件包,其目錄結構如下:
sound/
|-- __init__.py
|-- interpreter.py
|-- blast.py
在獲得軟件包之前, interpreter.py
將使用命令import blast
導入blast.py
。 現在,對於該軟件包,我不得不說import sound.blast as blast
。
盡管我對此不介意,但我希望既可以使用該語句將sound
包導入其目錄之外,也可以直接運行interpreter.py
。 但是,如果我直接運行interpreter.py
,則會收到導入錯誤,提示該sound
不存在。
我當前的解決方案是這樣的:
try:
import sound.blast
except ImportError:
import blast
但這感覺很難看。 有更好的解決方案嗎?
另一個解決方法是。
將以下行中的“ try import”語句替換為interpreter.py文件。
import sys
sys.path.append("..")
import sound.blast
因此,父目錄也將包含在路徑中,然后在聲音目錄中導入sound.blast不再是問題。
希望能幫助到你
對於我程序中更復雜的名稱空間, sys.path.append("..")
方法實際上無法正常工作。 我解決它的最好方法是:
if __package__ == 'sound':
import sound.blast
else:
import blast
然后可以使用更復雜的名稱空間,例如sound.blast.driver.specification
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.