我的PYTHONPATH
中有一个模块看起来像这样:
模块.py
from __future__ import absolute_import
import foo
foo.do_something()
print("I am a module!")
我稍后使用 python -m module
调用此脚本。该脚本在大多数情况下都有效,但我发现我被 cd 到一个目录中,该目录中有一个带有 foo/__init__.py
的文件夹。在其中,Python 更喜欢该文件夹而不是其他 foo
我的模块PYTHONPATH
。我认为这是因为 Python 正在处理 foo
文件夹作为隐式相对导入(我使用的是 Python 2.7)。
如何让 Python 不将 $PWD 中的文件夹视为隐式相对导入?
来自 __future__
导入绝对导入不起作用
module.py
我使用的每个其他模块都有 from __future__ import absolute_import
包括。所以现有的问题如 Python: Disabling relative import不解决这个问题。
最佳答案
您可以从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!")
关于python - 防止Python从当前目录相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62778734/