使用有一个缺点,你将无法运行模块,standalones了,因为你会得到一个异常:ValueError: Attempted relative import in non-package
如何在Python模块中正确使用相对或绝对导入?在Python相对进口
# /test.py: just a sample file importing foo module
import foo
...
# /foo/foo.py:
from . import bar
...
if __name__ == "__main__":
pass
# /foo/bar.py: a submodule of foo, used by foo.py
from . import foo
...
if __name__ == "__main__":
pass
我应该如何修改示例代码为了能够执行所有:test.py
,foo.py
和bar.py
我正在寻找一种可以与python 2.6+(包括3.x)一起使用的解决方案。
检查此主题:http://www.velocityreviews.com/forums/t502905-relative-import-broken.html – 2010-09-01 10:41:02
谢谢,不幸的是我知道这个老线程,但我发现没有解决问题。到目前为止,我只观察到很多人抱怨这一点。我们需要一个清晰的解决方案/例子解决这个问题 – sorin 2010-09-01 11:57:17
相关:[如何知道python脚本是否使用解释器的-m选项运行?](http://stackoverflow.com/questions/8348726/) – 2011-12-01 23:28:54