VSCode中Python ModuleNotFoundError求助:无法导入main模块
问题分析与解决方法
问题根源
- 直接运行
test_main.py时,Python的模块查找路径(sys.path)默认只包含当前脚本所在的tests目录,找不到上层的main.py,所以from main import hello会报模块找不到错误。 - 相对导入
from ..main import hello要求脚本是作为包的一部分被导入或运行的,但直接执行test_main.py时,它被视为顶层脚本,Python无法识别它的父包,因此报错。
可行解决方案
方案1:手动添加项目根目录到Python路径
在test_main.py的最开头添加以下代码,把项目根目录(ModuleProject)加入到Python的模块查找路径中:
import sys from pathlib import Path # 获取当前脚本的父目录的父目录(即ModuleProject根目录) project_root = Path(__file__).parent.parent sys.path.append(str(project_root)) # 现在可以正常导入 from main import hello
方案2:将项目作为包运行
- 在
ModuleProject根目录下创建一个空的__init__.py文件,让Python将其识别为一个包。 - 打开VSCode终端,切换到
ModuleProject的上级目录(比如如果ModuleProject在~/projects下,就进入~/projects),然后运行命令:
python -m ModuleProject.tests.test_main
此时test_main.py作为包的一部分运行,就可以使用相对导入:
from ..main import hello
方案3:修改VSCode运行配置
通过VSCode的launch配置,设置运行时的工作目录为项目根目录:
- 打开
.vscode/launch.json(如果没有就创建),添加或修改配置:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Run Test", "type": "python", "request": "launch", "program": "${workspaceFolder}/tests/test_main.py", "cwd": "${workspaceFolder}" } ] }
- 用这个配置运行
test_main.py,此时Python会把项目根目录加入查找路径,直接使用from main import hello即可正常导入。
内容的提问来源于stack exchange,提问作者Tushaar
相关产品推荐
相关产品推荐

