如何在Python 3中创建包? ModuleNotFoundError

时间:2018-01-05 14:43:01

标签: python python-3.x packages

我正在按照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)

1 个答案:

答案 0 :(得分:8)

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