2014-09-26 160 views
1

我有一個文件結構像Python 3的「杯酒人生」相對進口

math/ 
    snippets/ 
     numerical_methods.py 
    homework1/ 
     main.py 
    homework2/ 
     main.py 

而且在作業1的main.py,我願做

from ..snippets.numerical_methods import fixed-point-iteration 

所以,我沒有爲我使用它的每個任務重新編寫此算法。但是,我收到錯誤「父模塊」'未加載,無法執行相對導入「。我究竟做錯了什麼?

回答

3

您不能從層次結構中比主腳本更高的東西導入,即比homework1文件夾更高的東西。你可以做的是路徑添加到您想要導入路徑下的腳本:

import sys 
sys.path.append("..") 
from snippets.numerical_methods import fixed-point-iteration 
+2

*您無法從一些上漲導入層次結構中的比你的腳本* - 其實你可以... – vaultah 2015-05-11 12:38:22

+1

見來自[this]的示例(https://docs.python.org/3.4/tutorial/modules.html#intra-package-references)頁面(「內部軟件包參考」部分) – vaultah 2015-05-11 12:44:19

+2

簡化付費人員。您不能導入比* main *腳本更高的文件。從鏈接:「請注意,相對導入基於當前模塊的名稱。由於主模塊的名稱始終爲」__main__「,因此用作Python應用程序主模塊的模塊必須始終使用絕對進口「。我編輯了答案,使其更清晰。 – Claudiu 2015-05-11 13:19:54