如何让VS Code像PyCharm/Spyder一样自动将项目根目录加入sys.path?
问题:VS Code中Python项目非根目录文件无法使用绝对导入
问题重现
项目结构:
- my_project - my_package - __init__.py - my_module.py - my_scripts - some_script.py
some_script.py尝试绝对导入:
from my_package.my_module import hello_world hello_world()
PyCharm运行正常(自动将项目根目录加入sys.path),但VS Code运行时会抛出ModuleNotFoundError——原因是VS Code默认仅将脚本所在目录加入sys.path,未包含项目根目录。
全局配置解决方案
要让VS Code像PyCharm一样,打开任意项目后自动将根目录加入sys.path,只需配置用户级全局设置,一次设置永久生效:
- 打开用户设置JSON:
- 按下
Ctrl + ,(Windows/Linux)或Cmd + ,(Mac)打开设置界面,点击右上角的「打开设置(JSON)」图标
- 按下
- 添加以下配置到
settings.json:"python.runOptions": { "env": { "PYTHONPATH": "${workspaceFolder}" } }, "python.analysis.extraPaths": ["${workspaceFolder}"], "python.autoComplete.extraPaths": ["${workspaceFolder}"] - 保存配置并重启VS Code,之后打开任何Python项目运行脚本时,项目根目录都会自动加入
sys.path,绝对导入可正常工作。
配置解释
python.runOptions.env.PYTHONPATH:通过环境变量告知Python将项目根目录(${workspaceFolder})加入模块搜索路径,Python启动时会自动读取该变量并添加到sys.pathpython.analysis.extraPaths/python.autoComplete.extraPaths:让VS Code的代码分析、自动补全功能识别项目根目录下的包,避免编辑器出现虚假的导入报错
补充提示
- 该配置对VS Code内所有运行方式生效:包括顶部栏「运行」按钮、右键「运行Python文件」、内置终端直接运行脚本
- 无需为每个项目重复设置
launch.json、执行pip install -e或修改代码,彻底解决临时方案的痛点
内容的提问来源于stack exchange,提问作者pyjamas
相关产品推荐
相关产品推荐

