需先确保终端中深度学习库可导入,再在vs code中激活对应python环境并手动选择解释器;调试时避免num_workers>0和jupyter内核冲突;添加类型注解、拆分链式调用以提升pylance推断;linux/macos用code .启动vs code继承环境变量,windows用anaconda prompt启动。

怎么在 VS Code 里直接运行 Python 深度学习脚本
VS Code 本身不运行代码,它靠 Python 扩展调用你本地的 python 解释器。所以第一件事不是配 VS Code,而是确认你的深度学习环境(比如 torch 或 tensorflow)真正在终端里能 import 成功。
实操建议:
- 打开 VS Code 终端(
Ctrl+`),输入python -c "import torch; print(torch.__version__)",看是否报错 - 如果报
ModuleNotFoundError,说明 VS Code 当前没激活对的 Python 环境——别急着改设置,先在终端用conda activate myenv或source venv/bin/activate激活它,再用命令面板(Ctrl+Shift+P)选Python: Select Interpreter,手动指向这个已激活环境里的python可执行文件 - 检查右下角状态栏:必须显示类似
Python 3.9.16 ('myenv': conda),而不是系统默认的/usr/bin/python3
为什么按 F5 调试时卡住或报 CUDA 初始化失败
这不是 VS Code 的锅,是 PyTorch/TensorFlow 在子进程里初始化 GPU 时和调试器有冲突,尤其常见于用了 torch.multiprocessing 或 DataLoader(num_workers>0) 的训练脚本。
实操建议:
- 临时把
DataLoader的num_workers改成0,再 F5 —— 如果能跑通,问题就在这儿 - 不要在调试模式下启动 Jupyter Notebook 内核;VS Code 的 Python 扩展会自动拉起一个 kernel,但深度学习模型加载时可能抢显存,导致 kernel 崩溃,表现为 notebook 单元格一直转圈
- 想边训边看变量?用
print()或logging.info()更稳;断点调试适合查逻辑错误,不适合盯 tensor shape 或 grad flow
怎么让 VS Code 正确识别 model.train() 这类链式调用的类型提示
PyTorch 的动态属性(比如 model.layer1)和 fluent 接口(.cuda().half().train())会让 VS Code 的 Pylance 推断失效,导致补全不准、跳转失灵。
实操建议:
- 在关键对象后加类型注解,例如:
model: torch.nn.Module = MyNet(),比单纯model = MyNet()强得多 - 避免写
model.cuda().train()这种连写;拆成两行,Pylance 对model.train()的推断更准 - 升级到最新版
Pylance扩展,并在settings.json里加:"python.analysis.typeCheckingMode": "basic",太激进的类型检查反而会让 PyTorch 提示变差
训练脚本在终端能跑,但在 VS Code 里报 OSError: [WinError 126](Windows)或 libcuda.so not found(Linux)
根本原因是 VS Code 启动时没读取 shell 的环境变量(比如 LD_LIBRARY_PATH 或 PATH 里 CUDA 的路径),而你在终端里 source 过 setup.sh 或激活过 conda。
实操建议:
- Linux/macOS:不要从桌面图标启动 VS Code,改用终端输入
code .启动,它会继承当前 shell 的所有环境变量 - Windows:用 Anaconda Prompt 启动 VS Code,或者修改快捷方式目标为:
cmd /c "call C:\path\to\anaconda3\Scripts\activate.bat && code" - 验证方法:在 VS Code 终端里运行
echo $LD_LIBRARY_PATH(Linux)或echo %PATH%(Windows),确认输出里包含cuda/lib64或cudnn相关路径
GPU 相关错误永远优先查环境变量是否透传,而不是怀疑代码或驱动。这点容易被忽略,但几乎覆盖了 80% 的“终端能跑、VS Code 报错”场景。










