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

问题描述 投票:-1回答:2

我无法创建可导入的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
python module package
2个回答
2
投票

您尚未将名称MyClass导入当前名称空间。你已经进口了mypackage。要访问mypackage中的任何内容,您需要在名称前加上mypackage.<Name>

import mypackage

x = mypackage.MyClass(None)

1
投票

正如@rdas所说,你需要在名称前加上mypackage.<Name>

我不建议这样做,但你可以通过通配符导入以使x = MyClass(None)工作:

from mypackage import *

现在,mypackage中的所有内容都在当前命名空间中导入并可用。但是,您必须小心使用通配符,因为它们可以创建定义冲突(如果多个模块对于不同的东西具有相同的名称)。

© www.soinside.com 2019 - 2024. All rights reserved.