小编典典

python中的绝对导入不起作用,相对导入起作用

python

我似乎无法让绝对导入在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

预先感谢您的任何见解!


阅读 160

收藏
2020-12-20

共1个答案

小编典典

由于未显示,因此我必须假设您正在运行python a/foo.py,这会将脚本('a')的目录放在开始的位置sys.path,而实际上您希望将当前目录放在的开始sys.path

您应该运行python -m a.foo它将正确初始化sys.path项目结构的根目录。

这是我以其他方式写过的更深入的论文,这个问题可以解决。

2020-12-20