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

Absolute imports in python not working, relative imports work

我似乎无法在 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

None 列出的解决方案 帮助

提前感谢您的任何见解!

因为它没有显示,我不得不假设你是 运行ning python a/foo.py,这会将脚本 ('a') 的目录放在 [=12] 的开头=] 而实际上您希望当前目录位于 sys.path.

开头

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

这是我在其他方面写的 a more in-depth writeup 同样的问题可能会出现问题。

另外我录制了一个关于这个主题的视频:don't run python my/script.py!