Python导入模块报错:ModuleNotFoundError: No module named 'test_invoke'
解决Flask项目中ModuleNotFoundError: No module named 'test_invoke'的问题
问题根源
你的项目目录里,main_call.py和invoke.py、config.py都处于test_invoke目录下,当前导入语句from test_invoke.invoke import end_invoke使用了绝对导入,但运行脚本的方式导致Python无法将test_invoke识别为合法模块。
方案一:修改导入语句(最简单直接)
将main_call.py中的导入语句改为相对当前目录的导入:
# 替换原有的 from test_invoke.invoke import end_invoke from invoke import end_invoke
from config import config可以保持不变,因为config.py同样在当前目录下。
修改完成后,直接在test_invoke目录下执行python3 main_call.py即可正常启动项目。
方案二:使用模块方式运行脚本(保留绝对导入)
如果想保留from test_invoke.invoke import end_invoke的绝对导入写法,需要切换到test_invoke的上级目录,然后以模块形式运行脚本:
# 假设当前工作目录是test_invoke的上级目录 python3 -m test_invoke.main_call
这种方式会让Python将test_invoke识别为完整的Python包,从而正确解析绝对导入路径。
额外注意事项
- 确保
test_invoke目录下的__init__.py文件存在(你的目录中已包含,无需修改),这是Python将目录识别为包的必要条件。 invoke.py中的from config import config导入语句是正确的,无需调整。
内容的提问来源于stack exchange,提问作者Suresh
相关产品推荐
相关产品推荐

