我正在将用python2.7编写的模块更新到python3.6。我对这两种语言版本中__init__.py
的处理方式有一个顾虑。在
尤其是,我的__init__.py
看起来像这样:
from FT_optimize import *
from FuzzyVars import *
from FuzzyTree import *
当我从Python2.7上传包时。像这样:
^{pr2}$我可以访问__init__.py
中声明的所有模块的名称空间。比如:
ft.optmize_partition(ft.FuzzyTree)
但是,Python 3.6中的相同代码报告了一个错误:
AttributeError: module 'FuzzyTree' has no attribute 'optimize_partition'
有什么想法吗?在
从Python文档中我没有看到任何标准的区别。在
这个问题的解决方案(请参阅我的注释)是声明到init.py中所有模块的相对路径,包括那些位于同一目录中的模块。在
因此,按照前面的示例,init.py现在看起来:
(你应该意识到模块名称前的点)。 现在一切正常。在
相关问题 更多 >
编程相关推荐