Python 3 绝对导入不起作用
Python 3 absolute import does not work
我有一个包含两个文件的文件夹: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)
根据文档,应该 "only perform absolute imports".
重命名 csv.py 不是可接受的解决方案。另外我宁愿不使用 "from module import something" 语法(在这种情况下它没有帮助)。
(在 Linux Mint 17.1 上使用 Python 3.4.0)
您有一个顶级 csv
模块,它位于 .
路径上,因此它在内置模块之前找到。这就是绝对导入 .
的工作原理
如果您希望 csv
成为 'local',请将您的模块移动到一个包中。将您的模块移动到包含您的包名称的目录中,并添加一个 __init__.py
文件(它可以是空的)。然后,您的 csv
模块被命名为 yourpackage.csv
,并且不会被视为顶级模块。
我有一个包含两个文件的文件夹: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)
根据文档,应该 "only perform absolute imports".
重命名 csv.py 不是可接受的解决方案。另外我宁愿不使用 "from module import something" 语法(在这种情况下它没有帮助)。
(在 Linux Mint 17.1 上使用 Python 3.4.0)
您有一个顶级 csv
模块,它位于 .
路径上,因此它在内置模块之前找到。这就是绝对导入 .
如果您希望 csv
成为 'local',请将您的模块移动到一个包中。将您的模块移动到包含您的包名称的目录中,并添加一个 __init__.py
文件(它可以是空的)。然后,您的 csv
模块被命名为 yourpackage.csv
,并且不会被视为顶级模块。