创建可导入的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上使用。

我应该如何命名可导入的.sqlite持久存储?

php 将PHP注册的ACF字段转换为可导入的JSON格式

php 将PHP注册的ACF字段转换为可导入的JSON格式

php 将PHP注册的ACF字段转换为可导入的JSON格式

php 将PHP注册的ACF字段转换为可导入的JSON格式