Python 3 绝对导入不起作用

uhu*_*hlk 2 python python-import python-3.x

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

import csv
Run Code Online (Sandbox Code Playgroud)

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

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

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

from __future__ import absolute_import
Run Code Online (Sandbox Code Playgroud)

没有帮助。也不

csv = __import__('csv', level=0)
Run Code Online (Sandbox Code Playgroud)

根据文档,它应该“只执行绝对导入”。

重命名 csv.py 不是可接受的解决方案。另外,我不想使用“从模块导入某些内容”语法(在这种情况下它没有帮助)。

(在 Linux Mint 17.1 上使用 Python 3.4.0)

Mar*_*ers 5

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

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