我有一个在Python 2.7中运行但在3.5中没有运行的代码,我找不到原因。它与导入有关。
根文件夹有一个名为s
的子文件夹。从根文件夹,我运行的脚本a.py
包含行from s import *
。
在s
文件夹中,有一个名为b.py
的文件,其中包含导入行:from c import c
它会尝试导入保存在c.py
中的类,该类位于子文件夹s
中。
当我从根文件夹运行脚本a.py
时,我得到ImportError
说“没有名为c
的模块”。
在Python 2.7中运行没有问题。有人可以建议可能是什么问题以及如何在Python 3.5中以不同方式做到这一点?
答案 0 :(得分:3)
包中的隐式导入不适用于Python 3,因此要使其工作,您需要使用显式相对导入:
from .s import *
这适用于Python 2和Python 3.这也使您更清楚地想要从相对包导入,而不是从已安装的包导入。