我正在做一个小项目,我真的不明白为什么我会得到ModuleNotFoundError。我有以下目录结构:
项目结构
我的代码导入以下内容:
import asyncio
import socketio
from core.databases.mongo_handler import create_donation, get_streamer
from core.models.donations import Donation
当我尝试从命令行执行代码时,我会得到以下错误:
(venv) user@host % python standalone/sockets.py
Traceback (most recent call last):
File "/Users/user/Project/standalone/sockets.py", line 5, in <module>
from core.databases.mongo_handler import create_donation, get_streamer
ModuleNotFoundError: No module named 'core'
我不明白我为什么会犯那个错误。
Sone澄清:
- 我在不同的目录中没有
__init__.py
文件,但它不会改变任何内容,我已经尝试过了 - 我想从项目的根运行代码,这就是为什么我使用
python standalone/sockets.py
运行它
[已解决]
感谢S3DEV和他的链接,我找到了答案。
由于我将文件作为脚本而非模块运行,因此无法以相对方式导入模块。为了解决这个问题并保持我的目录结构,我需要运行如下脚本:
python -m standalone.sockets
现在我要求python将其视为一个模块,一切都很好。希望这也能帮助其他人!