python - 开发一个新包并得到 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')
有人可以告诉我我做错了什么吗?
提前致谢
解决方案
如果你只想导入 Icinga 类,你可以这样做
from receivers.icinga import Icinga
如果你想在接收器上调用 import 语句,你应该将init .py 的第 2 行更改为:
from .icinga import Icinga
我在这里重现了您的问题,并且能够像那样解决它。
编辑:
做这第二件事(在 __init__.py 上),你可以在 main.py 上调用它:
import receivers
receivers.icinga.Icinga()
推荐阅读
- r - ggplot 中是否有 R 函数可以将绘图限制在最大数据范围内?
- django - 按与坐标的距离过滤(Django over MariaDB)?
- java - 如何在 .bat 文件运行 jar 时将 .jar 和 .bat 文件制作为 .exe
- javascript - 遍历不规则行长的矩阵
- ios - 如何扩展相机的视图以占据整个屏幕(如 snapchat)?
- javascript - 如何在 HTML 画布上渲染图标字体,尤其是 Material Design 图标字体?
- javascript - Javascript点击事件监听器只触发一次
- r - 如果它在 tabItem 下,闪亮的 dataTableOutput 将不会显示
- python - 使用 numpy.where() 和 or 语句会给我一个关于模糊值的错误
- python - 通过终端调用 python 脚本时, ImportError