创建可导入的Python 3包/模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建可导入的Python 3包/模块相关的知识,希望对你有一定的参考价值。
我无法创建可导入的Python包/库/模块或任何正确的命名法。我使用的是Python 3.7
我使用的文件结构是:
Python37//Lib//mypackage
mypackage
__init__.py
mypackage_.py
__init__.py
中的代码是:
from mypackage.mypackage_ import MyClass
mypackage_.py
中的代码是:
class MyClass:
def __init__(self, myarg = None):
self.myvar = myarg
从我的桌面我尝试运行以下代码:
import mypackage
x = MyClass(None)
但是得到以下错误:
Traceback (most recent call last):
File "C:Users***Desktopimporttest.py", line 3, in <module>
x = MyClass(None)
NameError: name 'MyClass' is not defined
答案
您尚未将名称MyClass
导入当前名称空间。你已经进口了mypackage
。要访问mypackage
中的任何内容,您需要在名称前加上mypackage.<Name>
import mypackage
x = mypackage.MyClass(None)
另一答案
正如@rdas所说,你需要在名称前加上mypackage.<Name>
。
我不建议这样做,但你可以通过通配符导入以使x = MyClass(None)
工作:
from mypackage import *
现在,mypackage
中的所有内容都在当前命名空间中导入并可用。但是,您必须小心使用通配符,因为它们可以创建定义冲突(如果多个模块对于不同的东西具有相同的名称)。
以上是关于创建可导入的Python 3包/模块的主要内容,如果未能解决你的问题,请参考以下文章
python 将pip安装的Python包目录转换为可导入的zip文件,以便在Google App Engine上使用。