我似乎无法让绝对导入在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
预先感谢您的任何见解!
由于未显示,因此我必须假设您正在运行python a/foo.py,这会将脚本('a')的目录放在开始的位置sys.path,而实际上您希望将当前目录放在的开始sys.path。
python a/foo.py
'a'
sys.path
您应该运行python -m a.foo它将正确初始化sys.path项目结构的根目录。
python -m a.foo
这是我以其他方式写过的更深入的论文,这个问题可以解决。