我似乎无法在python中使用绝对导入。这是我的文件结构:
a/
b/
__init__.py
__init__.py
foo.py
foo.py:
# Including or removing the __future__ import has no effect
from __future__ import absolute_import
from a import b # just `import b` works fine
print "success!"
我反而得到:
ImportError: No module named a
世界上到底发生了什么?我觉得我错过了一些基本的东西。虽然这个例子很简单,但我需要绝对导入才能为真实项目工作,所以只需用相对的导入替换导入就不是一种选择。我正在使用python 2.7.13
列出的所有解决方案here都没有帮助
提前感谢任何见解!
答案 0 :(得分:6)
由于未显示,我必须假设您正在运行python a/foo.py
,这会将脚本目录('a'
)放在sys.path
的开头,而实际上您需要sys.path
开头的当前目录。
您应该运行python -m a.foo
,这将正确初始化项目结构的sys.path
根。
这是a more in-depth writeup我在其他方面写的同样的问题可以解决。