2013-02-20 76 views
1

我有一個包這樣努力理解Python包和進口statment

sound/ 
    __init__.py 
    effects/ 
     __init__.py 
     echo.py 
    formats/ 
     __init__.py 
    avi.py 

內avi.py我有這樣

from sound.effects import echo 

這個代碼拋出無模塊命名聲音import語句。效果錯誤

pythondocs我明白,這是可能的。我通過stackoverflow 搜索,發現相關的問題和答案,但我無法理解它們。

請幫我解決這個問題。

謝謝,

Prawyn。

回答

2

如果你從formats文件夾中運行avi.py,不調整PYTHONPATH,Python將無法找到effects包。嘗試從聲音目錄之外運行代碼,修改環境變量PYTHONPATH,使其包含sound所在的目錄,或者在運行時更改PYTHONPATH(請參閱,例如this link)。

+0

非常感謝。你是對的。我正在運行avi.py格式文件夾。將通過鏈接並回復你。謝謝。 – 2013-02-20 08:29:37

2

如果文件夾名稱是effects,您爲什麼要從effect導入?改爲嘗試from sound.effects import echo

另外,你爲什麼要從本身內部導入echo

+0

對不起,我錯了。我改變了問題。我必須導入回聲到AVI – 2013-02-20 08:22:41

1

我打算假設sound.effect是一個錯字,並且是sound.effects。如果是這樣的話,那麼這個問題可能是由於你的項目結構。

如果你的項目的根級別是sound作爲您圖表中,你已經將其添加到您的PYTHONPATH(或任意數量的其他安裝方法),那麼Python將不知道到哪裏尋找sound(因爲有沒有相對於名爲sound的根目錄的目錄)。

所以,通常你會看到封裝結構,如:

sound/ 
    README 
    LICENSE 
    setup.py 
    sound/ 
     __init__.py 

...等等。

使用您當前的目錄結構(並且如果我的假設是正確的),那麼實際上可以工作的導入是from effects import echo

+0

謝謝。我改變了我的問題。對不起。 – 2013-02-20 08:33:29

+0

同樣的問題:Python仍然不會知道root''sound''包是什麼。嘗試將''avi.py''中的''import''語句更改爲''from import import echo''作爲一個快速測試,以查看我的假設是否正確。 – 2013-02-20 08:38:08

+0

是的。它的工作。謝謝。 – 2013-02-20 10:06:44