我正在寻找一种方法来编写python包和模块,使它们对python3友好,也使它们易于导入。你知道吗
最常见的情况是,有一个主要类要提供给用户,称之为MyCode
。你知道吗
您的包将被命名为mycode
,您将把MyCode类的主体放入mycode/mycode.py
。你知道吗
现在,你会期望人们可以做其中一件事:
import mycode
obj = mycode.MyClass()
或:
from mycode import MyClass()
obj = MyClass()
现在的问题是,在python2.6+和3.x中,您应该在__init__.py
中放置什么来实现这一点
将
from mycode import *
添加到mycode/__init__.py
的开头将使mycode/mycode.py
的内容可以从mycode
包导入,就像它只是一个普通的模块,就像mycode.py
,就像您从与mycode.py
脚本(/mycode/
)相同的目录import mycode
导入mycode/mycode.py
。。。你知道吗使用绝对导入,它可以在python版本中正常工作。内部
mycode/__init__.py
输入:其中
__future__
导入是从python2.5及更高版本开始工作的;请参见PEP 328。没有absolute_import
导入,import mycode
是不明确的;python3将它视为绝对的并加载顶级包,python2将它视为相对的并导入嵌套模块。你知道吗另一种方法是使用相对导入:
它将在同一系列版本中起作用。你知道吗
相关问题 更多 >
编程相关推荐