我有一个包含两个文件的文件夹: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)
答案 0 :(得分:4)
您有一个顶级csv
模块,它位于.
路径上,因此它位于内置模块之前。这就是绝对导入工作的方式。
如果您希望csv
为“本地”,请将模块移到包中。将模块移动到包含名称的目录中,并添加__init__.py
文件(可以为空)。然后,您的csv
模块被命名为yourpackage.csv
,不会被视为顶级模块。