568 字
3 分钟
在 VS Code 中如何设置Sources Root,让 import 更干净
2025-09-19

如果你用过 PyCharm,就知道它有个特别方便的功能:Mark Directory as Sources Root。只要点一下,就能把某个目录设为 Python 的根路径,避免 import 时老是报 ModuleNotFoundError

可是在 VS Code 里,这个按钮是不存在的。那要怎么办呢?别担心,VS Code 也能实现同样的效果,只是需要自己稍微配置一下。


为什么会 import 找不到?#

Python 的模块查找规则依赖于 sys.path,默认只包含:

  • 当前运行脚本所在目录
  • 系统安装的标准库和第三方库路径

如果你的项目长这样:

project/
├── app/
│ ├── utils/
│ │ └── helper.py
│ └── main.py
└── tests/
└── test_case.py

test_case.py 里写:

from utils import helper

大概率会报错:ModuleNotFoundError: No module named 'utils'。 原因是 Python 并不知道 app/ 应该作为根目录。


方法一:使用 PYTHONPATH(推荐)#

VS Code 的 Python 扩展支持读取环境变量 PYTHONPATH,我们可以把需要的目录加进去。

1. 新建 .env 文件#

在项目根目录下创建一个 .env 文件,写上:

PYTHONPATH=./app

如果你有多个路径(比如 appcore),Linux/WSL/macOS 用冒号分隔:

PYTHONPATH=./app:./core

Windows 则用分号:

PYTHONPATH=.\app;.\core

2. 修改 .vscode/launch.json#

在项目里新建 .vscode/launch.json,写入:

{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"envFile": "${workspaceFolder}/.env"
}
]
}

这样,每次运行或调试时,VS Code 都会自动把 app/ 当作根目录。


方法二:在 launch.json 里直接写 PYTHONPATH#

不想用 .env 文件,也可以直接在配置里写:

"env": {
"PYTHONPATH": "${workspaceFolder}/app:${workspaceFolder}/core"
}

方法三:临时在终端里加#

如果只想在命令行里跑,可以这样:

export PYTHONPATH=./app:./core:$PYTHONPATH
python tests/test_case.py

(Windows 下用 set PYTHONPATH=.\app;.\core;%PYTHONPATH%


方法四:做成 Package(进阶)#

如果你准备长期维护项目,可以直接把目录做成 package:

  1. 在根目录放 setup.pypyproject.toml

  2. 运行:

    pip install -e .

    这样整个项目就能被当作模块使用,VS Code、PyCharm、甚至命令行里都能统一 import。


总结#

  • PyCharm 有现成的 Sources Root 按钮,点一下就行
  • VS Code 需要通过 配置 PYTHONPATH 来模拟同样的效果
  • 推荐的做法是:.env + launch.json,既干净又可复用

这样一来,你在 VS Code 里写 import 时就能和 PyCharm 一样顺畅,再也不用在代码里写乱七八糟的 sys.path.append 了。

在 VS Code 中如何设置Sources Root,让 import 更干净
https://fuwari.vercel.app/posts/在-vs-code-中如何设置sources-root让-import-更干净/
作者
Lorem Ipsum
发布于
2025-09-19
许可协议
CC BY-NC-SA 4.0