Python2迁移Python3报lyrics模块无Domain属性错误如何解决
报错原因
- Python3 默认采用绝对导入机制,和Python2的隐式相对导入规则不兼容:Python2环境下执行包内
from lyrics import *时,会优先查找当前包目录下的lyrics.py模块;但Python3执行该语句时,只会从系统模块搜索路径里查找顶层名为lyrics的模块,不会自动匹配当前包下的同名文件。 - 现有
lyrics/__init__.py中的导入语句没有适配Python3规则,导致定义在lyrics/lyrics.py中的Domain类没有被加载到lyrics包的顶层命名空间,执行lyr.Domain调用时就会触发属性不存在的错误。
修复方案
修改lyrics/__init__.py文件,将隐式相对导入改为Python3支持的显式相对导入,修正后的文件内容如下:
from .lyrics import * from . import functions
修改完成后重新执行./manifold.py即可正常运行,Domain类会被正确暴露到lyrics包的顶层接口中。
内容的提问来源于stack exchange,提问作者ailauli69
相关产品推荐
相关产品推荐

