一. 问题描述
在 1.py 中调用 config.py 中的名称时,在 vscode 中直接运行 1.py 文件会报错。
# 文件夹结构如下。 项目根目录/ config.py main.py dir1/ 1.py二. 原因分析
运行 `python dir1/1.py` 时:
- `sys.path[0]` = 脚本所在目录 = `.../项目根目录/dir1/`,
- Python 只在 `dir1/` 下找 `config` 包 → 找不到 → 报错。
- 如果脚本在根目录下运行,`sys.path[0]` = 根目录,自然能找到 `config` 模块。
关键在于 `sys.path[0]` 是脚本文件所在目录,不是你执行命令的工作目录。
三. 解决方法
Vscode 的项目配置文件设置如下:
# settings.json { "python.terminal.executeInFileDir": false, "terminal.integrated.env.windows": { "PYTHONPATH": "${workspaceFolder}" } } # launch.json { "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}", "env": { "PYTHONPATH": "${workspaceFolder}" } } ] }设置了 "PYTHONPATH“ 环境变量为项目根目录,python 会从中查询包和模块,从而能正确找到config。 这样设置的 "PYTHONPATH“ 环境变量也是项目级的,不会影响其它项目。
注意 1.py 的导入语句应该如下:
from config import a这样就能正常的运行和调试模块了。