【发布时间】:2012-11-04 07:53:28
【问题描述】:
我最近决定升级到 python 3,并开始转换我的一些脚本。我在使用名为 io 的模块的脚本中遇到了问题 - 在 python 2 中,这非常好,但是在 python 3 中,io 是文件的标准模块。我发现this old question 大约是相同类型的问题,但这似乎与python 2 相关。我有相反的问题 - 给定两个文件,main.py 和io.py 在顶级包中,import io 在main.py 将导入标准的 io 模块,而不是本地模块。 from __future__ import absolute_imports 没有帮助,from . import io 和相关尝试按预期失败(我从来不明白 - python 真的不知道顶级包在哪里?)。重命名显然是一种解决方案,但如果可能的话,我想避免它。是否有一些解决模块名称冲突的python 3标准方法?
【问题讨论】:
-
这里有一个类似的问题和答案-stackoverflow.com/questions/1224741/…
-
是的,我链接了那个:“我发现 this old question 也有类似的问题,但这似乎与 python 2 有关。”
-
在 Python3 中,绝对导入是默认的。所以:-
from .base import BaseThing领先。说“从模块目录导入基础”;换句话说,.base映射到./base.py。 -
或
from .io import *适合您的情况。 -
from .io import *抛出SystemError: Parent module '' not loaded, cannot perform relative import因为这两个模块都在顶级包中。像from . import io这样的相关表单会抛出同样的错误。
标签: python python-3.x python-2.x