【问题标题】:How to create packages in Python 3? ModuleNotFoundError如何在 Python 3 中创建包? ModuleNotFoundError
【发布时间】:2018-06-15 09:32:51
【问题描述】:

我正在按照 Python Central 上的简单指南为我的代码创建一个包:

https://www.pythoncentral.io/how-to-create-a-python-package/

所以我的目录结构是:

main.py
pack1/
         __init__.py
         Class1.py

main.py 文件中我导入并使用Class1 作为:

from pack1 import Class1
var1 = Class1()

在我写的__init__.py文件中:

import Class1 from Class1

我完全按照指南进行操作,但仍然出现错误:

ModuleNotFoundError: No module named 'Class1' (in __init__.py)

【问题讨论】:

    标签: python python-3.x packages


    【解决方案1】:

    Python 3 有absolute imports。将您的 __init__.py 更改为:

    from .Class1 import Class1
    

    前导点表示该模块是相对于__init__.py 的位置找到的,此处位于同一目录中。否则,它会查找具有此名称的独立模块。

    PEP 328 提供所有详细信息。从 Python 3.0 开始,这是the only way

    删除的语法

    相对导入唯一可接受的语法是from .[module] import name。所有不以. 开头的import 表单都被解释为绝对导入。 (PEP 0328)

    文件Class1.py 包含以下代码:

    class Class1:
        pass
    

    【讨论】:

    • 好的,现在我得到错误:TypeError 'module' object is not callable,对于我创建对象的行:var1 = Class1()。
    • 您确定您的__int__.py 包含:from .Class1 import Class1
    • 啊抱歉,我在 Class1 的构造器中遇到了错误,我在其中创建了一个位于同一个包中的 Class2 对象。但它是通过使用前导点符号将 Class2 导入 Class1 来解决的:from .Class2 import Class2。谢谢!!
    猜你喜欢
    • 2018-08-19
    • 2016-07-17
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多