我正在将我的 Python 2.7 内容(运行良好)迁移到 3.4.3。
在我的 C:\Python34\Lib\MyLibs 文件夹中,我有两个文件:从 Python 2.7 中的同一文件夹复制的 __init__.py
和 utils.py
。在 utils.py 中,我在顶部附近有这一行:
from __init__ import *
在 3.4.3 中,当我执行 import MyLibs.utils
时,出现错误:
ImportError: No module named
__init__
但是,我可以确认 __init__.py
中的代码在第一次运行 import 语句时已成功执行。
我可以知道如何在 Python 3 中导入或访问在 __init__.py
中声明的变量吗?
最佳答案
Python 3 使用绝对导入,其中不合格的导入始终作为顶级包进行查找。您没有这样的包。
您可以使用显式相对导入来代替:
from . import *
或使用绝对导入
from packagename import *
并不是说您应该在 Python 2 中首先使用 from __init__ import *
。您可以使用 from packagename import *
来代替。
您可以通过以下方式在 Python 2 中启用绝对导入模型:
from __future__ import absolute_imports
参见PEP 328 - Imports: Multi-Line and Absolute/Relative .
但是您可能还会遇到其他问题。移植并不是那么简单,请阅读 Porting to Python 3 book 中的问题。 。本期为a common migration problem .
关于python - __init__.py 发生了怎样的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346375/