2015-02-11 37 views
1

我在相对导入时遇到了问题,但我认为它是因为我完全不理解包结构。eclipse中的相​​对导入和包结构?

例如,这里是我的包装结构。

neo_autorig/       Source folder, Top level 
     __init__.py    
     basic/     Subpackage for basic utiltites for the script 
       __init__.py 
       name.py 

     name_test.py 
     module_locator.py 

即使世界比这更多,但是这基本上是我使用什么进口

在name.py我正在使用进口

from .. import module_locator 

模块定位器,但它说

# Error: line 1: Attempted relative import beyond toplevel package 

是顶级脚本(像我的主脚本/用于执行所有事情)应该在顶级源文件夹我在日食包?或者我是否设置错了。源文件夹中还有其他的子包,每个包都包含脚本。

编辑:如果我putanother包在一个子包,我可以相对导入,其唯一的情况下,我不能从一个子包到顶层包的相对导入,脚本源是在我的python路径。

回答

1

python导入机制与文件的__name__一起使用。直接执行文件会给文件名称"__main__",而不是通常的名称。这样的问题的常见答案是使用-m选项运行程序。我建议您阅读pep 366,也许还有thisthis问题。