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