簡體   English   中英

帶有和不帶有命名空間的Python導入包

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

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