ModuleNotFoundError毫无意义



我正在做一个小项目,我真的不明白为什么我会得到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将其视为一个模块,一切都很好。希望这也能帮助其他人!

最新更新