2011-08-25 33 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