我正在将我的Python 2.7东西(工作正常)迁移到3.4.3。
在我的C:\ Python34 \ Lib \ MyLibs文件夹中,我有两个文件:__init__.py
和utils.py
从Python 2.7中的同一文件夹复制过来。在utils.py中,我在顶部附近有这条线:
from __init__ import *
在3.4.3中,当我执行import MyLibs.utils
时,我收到错误:
ImportError:没有名为
__init__
的模块
但是,我可以确认第一次运行import语句时__init__.py
中的代码已成功执行。
我是否知道如何导入或访问Python 3中__init__.py
中声明的变量。
答案 0 :(得分:2)
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。