我的PYTHONPATH
中有一个看起来像这样的模块:
module.py
from __future__ import absolute_import
import foo
foo.do_something()
print("I am a module!")
我稍后使用python -m module
调用此脚本。该脚本在大多数情况下都有效,但是我发现我进入了一个目录,该目录中包含一个带有foo/__init__.py
的文件夹,Python在{ {1}}。我认为这是因为Python将foo
文件夹视为隐式相对导入(我正在使用Python 2.7)。
如何让Python不要将$ PWD中的文件夹视为隐式相对导入?
PYTHONPATH
导入absolute_import不起作用 foo
和我使用的所有其他模块都包含__future__
。因此,诸如Python: Disabling relative import之类的现有问题无法解决此问题。
答案 0 :(得分:0)
您可以从sys.path
中删除当前目录,或将foo
模块的目录放在sys.path
的顶部
# at the very beginning of module.py
import sys
sys.path = sys.path[1:]
# or
sys.path.insert(0, <directory of foo module>)
# your code ...
from __future__ import absolute_import
import foo
foo.do_something()
print("I am a module!")