首页 > 解决方案 > 开发一个新包并得到 ModuleNotFoundError: No module named

问题描述

我正在编写一个小应用程序,我想在其中创建一个包含一小组类的模块,但是当我尝试从主应用程序导入类时,出现错误:

 my_project python3 main.py 
1
Traceback (most recent call last):
  File "main.py", line 2, in <module>
    import receivers
  File "/home/mario/Documents/python/my_project/receivers/__init__.py", line 2, in <module>
    from icinga import Icinga
ModuleNotFoundError: No module named 'icinga'

项目中的文件是:

├── main.py
└── receivers
    ├── icinga.py
    ├── __init__.py

在哪里main.py

#!/usr/bin/env python
import receivers

icinga = receivers.icinga.Icinga()

文件receivers/icinga.py

class Icinga:

    def __init__(self):
        print("I'm Icinga!")

文件receivers/__init__.py

print('1')
from icinga import Icinga
print('2')

有人可以告诉我我做错了什么吗?

提前致谢

标签: pythonpython-3.x

解决方案


如果你只想导入 Icinga 类,你可以这样做

from receivers.icinga import Icinga

如果你想在接收器上调用 import 语句,你应该将init .py 的第 2 行更改为:

from .icinga import Icinga

我在这里重现了您的问题,并且能够像那样解决它。

编辑:

做这第二件事(在 __init__.py 上),你可以在 main.py 上调用它:

import receivers
receivers.icinga.Icinga()

推荐阅读