VS Code Python “第一次运行失败 / 先执行 python 再激活 Conda” 问题定位与解决

在使用 VS Code 开发 Python 项目时,我在两台同样配置、同样 .vscode/settings.json 文件的电脑上却遇到了不同的运行行为:一台电脑可以正常执行脚本,而另一台电脑必须点击两次运行按钮才能正确激活 Conda 环境并执行代码。困惑了好久,最终定位到了问题根源。


背景

我在两台电脑上使用同一个 Conda 环境(isaaclab)以及同一个 VS Code 项目 (IsaacLab):

  • .vscode/settings.json 中指定了解释器路径:

    "python.defaultInterpreterPath": "/home/hongtao/miniconda3/envs/isaaclab/bin/python"

  • 并且检查过 VS Code 设置中 python.terminal.activateEnvironment 均为 true

正常预期是 VS Code 点击运行 Python 文件时先激活 Conda 环境,然后再执行脚本,从而正确运行项目代码。


问题描述

但我遇到的事实是:

电脑 A(通过 SSH Remote 到 电脑 B 运行)

点击运行按钮后,VS Code 终端执行流程如下:

复制代码
conda activate isaaclab /home/hongtao/miniconda3/envs/isaaclab/bin/python /home/.../spring.py 

这种行为正常,不会出现问题,所有模块都能被正确加载。

电脑 B(本地直接打开项目)

点击运行按钮后,VS Code 终端执行流程却是:

复制代码
python -u "/home/.../spring.py" (No module 错误,因为未先激活 conda 环境) ...之后才出现 conda activate isaaclab 

也就是说第一次点击运行时 Python 默认使用的是系统环境,不是 Conda 环境。因此第一次执行失败;之后 VS Code 才激活环境,第二次点击才成功运行。


问题分析

虽然两边的项目设置文件一样,但实际执行命令不同,这是因为 VS Code 可能使用了不同的运行入口。

我进一步确认发现:

  • 在电脑 B 上可能安装了 Code Runner 扩展(常见扩展名为 Code Runner)。

  • 默认情况下 Code Runner 的运行按钮(Run Code) 会直接执行:

    python -u 文件路径

它不会等待 Conda 环境激活,因此出现了 "先执行 python 再 activate"的行为,导致环境未正确激活,Python 报 No module found 错误。

VS Code Python 扩展 的运行按钮会优先激活选定的解释器/环境,从而传递正确的解释器路径执行 Python 脚本。

因此,两者点击按钮看起来一样,但执行逻辑不一致。


最终解决方式

问题定位后很快有了有效解决方式:

禁用 Code Runner 扩展

  1. 在 VS Code 的扩展管理器中找到 Code Runner

  2. 将其 禁用或者卸载

  3. 重启 VS Code。

之后点击运行按钮就会调用 VS Code Python 扩展流程,终端输出如下:

复制代码
conda activate isaaclab /home/hongtao/miniconda3/envs/isaaclab/bin/python /home/.../spring.py 

这样 Python 会在 Conda 环境中运行,模块导入正确,一次运行即可成功。

相关推荐
历程里程碑几秒前
滑动窗口------滑动窗口最大值
大数据·python·算法·elasticsearch·搜索引擎·flask·tornado
瑞雪兆丰年兮2 分钟前
[从0开始学Java|第十一天]ArrayList
java·开发语言
AI_56783 分钟前
Python正则表达式终极指南:从模式匹配到文本工程的智能跃迁
人工智能·python·正则表达式
B站_计算机毕业设计之家4 分钟前
AI大模型:Deepseek美食推荐系统 机器学习 协同过滤推荐算法+可视化 Django框架 大数据毕业设计(源码)✅
python·算法·机器学习·数据分析·django·推荐算法·美食
黄筱筱筱筱筱筱筱4 分钟前
第三次Python练习题
开发语言·python
夜郎king6 分钟前
基于 Java 实现数九天精准计算:从节气算法到工程化落地
java·开发语言
心柠8 分钟前
原型和原型链
开发语言·javascript·ecmascript
2501_941322038 分钟前
叉车人员检测识别实战:基于YOLOv8-BiFPN的高精度目标检测方案
python·yolo·目标检测
悟能不能悟12 分钟前
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges
java·开发语言
筷乐老六喝旺仔14 分钟前
使用Python进行PDF文件的处理与操作
jvm·数据库·python