繁体   English   中英

创建可导入的Python 3包/模块

[英]Creating importable Python 3 package / module

我在创建可导入的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\***\Desktop\importtest.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所有内容mypackage导入,并且可以在当前名称空间中使用。 但是,您必须小心通配符导入,因为它们会创建定义冲突(如果多个模块在不同事物上具有相同的名称)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM