Python - 导入全局/site-packages 模块而非本地同名文件

2 投票
6 回答
4025 浏览
提问于 2025-04-16 13:39

我正在使用Python和virtualenv/pip。我通过pip安装了一个叫做test_utils的模块(它是django-test-utils)。在我的一个django应用里,我想导入这个模块。但是在同一个目录里,我还有另一个文件test_utils.py。如果我使用import test_utils,那么它会导入这个本地文件。

有没有办法让Python使用一个非本地的、非相对的、全局的导入呢?我想我可以简单地重命名我的test_utils.py,但我很好奇有没有其他方法。

6 个回答

2

我可以通过在文件开头加上这行代码来强制 Python 导入全局的模块:from __future__ import absolute_import(在 Python 3.0 中,这个是默认设置)。

5

你可以通过修改 sys.path 来改变搜索顺序:

del sys.path[0]
sys.path.append('')

这样做会把当前目录放在系统搜索路径之后,这样本地文件就不会覆盖掉标准模块了。

0

因为我的 test_utils 文件是在一个 Django 项目里,所以我可以用 from ..test_utils import ... 这种方式来导入全局的那个文件。

撰写回答