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

lbe*_*ear 8 python python-import importerror python-2.7

我似乎无法获得绝对导入在python中工作.这是我的文件结构:

a/
  b/
    __init__.py
  __init__.py
  foo.py
Run Code Online (Sandbox Code Playgroud)

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!"
Run Code Online (Sandbox Code Playgroud)

我改为:

ImportError: No module named a
Run Code Online (Sandbox Code Playgroud)

世界上到底发生了什么?我觉得我错过了一些基本的东西.虽然这个例子很简单,但我需要绝对导入才能为真实项目工作,所以只需用相对的导入替换导入就不是一种选择.我正在使用python 2.7.13

这里列出的解决方案都没有帮助

提前感谢任何见解!

Ant*_*ile 11

由于它没有显示,我必须假设你正在运行python a/foo.py,这将脚本('a')sys.path的目录放在实际的开头,当你想要当前目录的开头sys.path.

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

这是一个更深入的写作,我写的其他方式同样的问题可以变成梨形.