Python 3绝对导入不起作用

时间:2015-12-21 15:05:02

标签: python python-3.x python-import

我有一个包含两个文件的文件夹:test.py和csv.py。在test.py中我有

import csv

这会导入我的csv.py文件,而不是导入内置的csv模块。

为什么呢?我认为绝对导入是Python 3中的默认导入?

如何强制Python加载内置的csv模块?

from __future__ import absolute_import

无济于事。

也没有
csv = __import__('csv', level=0)
根据文档,

应“仅执行绝对进口”。

重命名csv.py不是一个可接受的解决方案。另外,我宁愿不使用“from module import something”语法(在这种情况下不是有用)。

(在Linux Mint 17.1上使用Python 3.4.0)

1 个答案:

答案 0 :(得分:4)

您有一个顶级csv模块,它位于.路径上,因此它位于内置模块之前。这就是绝对导入工作的方式。

如果您希望csv为“本地”,请将模块移到包中。将模块移动到包含名称的目录中,并添加__init__.py文件(可以为空)。然后,您的csv模块被命名为yourpackage.csv,不会被视为顶级模块。