2011-08-25 58 views
2

搜索這是我的目錄結構:蟒蛇:迫使相對導入從腳本文件

 
scripts/ 
    bpydata/ 
    bpymodules/ 
    myCustomScripts/ 
    lib/ 
     __init__.py 
     customLib.py 
    plugin/ 
     __init__.py 
     myParser.py 
    __init__.py 
    runner.py 
    ... 
    my_import_script.py 
    ... 

我開始my_import_script,這將導入myCustomScripts包。

從那裏,我導入亞軍,這將導入myParser。

myParser需要在customLib定義的東西,所以它會使用相對導入讓它這樣

from .lib import customLib

但它不工作,因爲我開始my_import_script所以它會搜索它的父目錄而不是搜索myParser的父目錄。

當myParser需要.lib時,我如何確保從myParser的目錄而不是my_import_script的目錄中提取一個目錄?

+0

您是執行還是導入跑步者?這是兩回事。 –

+0

你說得對,它應該是導入而不是執行。 – MxyL

回答

2

要從父包導入,請使用..。如果我沒有誤解你,這應該工作:

from ..lib import customLib 

請參閱http://docs.python.org/tutorial/modules.html

+0

工作。我似乎誤解了它的用途。和.. – MxyL

+0

@Keikoku,我很高興。它們的工作方式與您在URL,shell和其他環境中指定相對路徑的方式類似。 – richardolsson