阻止从当前目录进行Python相对导入

时间:2020-07-07 15:29:40

标签: python import

我的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之类的现有问题无法解决此问题。

1 个答案:

答案 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!")