vscode中,安装其他版本cuda后,修改PATH变量无效

问题

前提: 以下操作全部在vscode执行。

首先安装了cuda的其他版本(原有11.4版本,现安装12.4版本)

然后在~/.bashrc中修改了PATH变量

export PATH=/usr/local/cuda-12.4/bin:/usr/local/cuda-11.4/bin:$PATH

但是实际依然使用的11.4(使用which nvcc查看其仍然指向11.4),因为这有一个vscode导致的坑。

原因

vscode下

使用vscode打开一个远程项目,先打印一下实际的PATH变量 echo $PATH

javascript 复制代码
/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/cuda-11.4/bin:/usr/local/cuda-12.4/bin:/usr/local/cuda-11.4/bin:/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:/home/user/anaconda3/bin:/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/cuda-11.4/bin:/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:/home/user/anaconda3/bin:/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/cuda-11.4/bin

我们分下行

javascript 复制代码
/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:
/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:
/usr/local/cuda-11.4/bin:/usr/local/cuda-12.4/bin:/usr/local/cuda-11.4/bin:

/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:
/home/user/anaconda3/bin:/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:
/usr/local/cuda-11.4/bin:

/home/user/.vscode-server/bin/8b3775030ed1a69b13e4f4c628c612102e30a681/bin/remote-cli:
/home/user/anaconda3/bin:/home/user/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:
/usr/local/cuda-11.4/bin

发现除了.bashrc里写的/usr/local/cuda-12.4/bin:/usr/local/cuda-11.4/bin:,其他部分重复了三遍。 并且,重复部分还有11.4版本的cuda路径,在12.4前面。

首先分别查看了所有可以修改PATH变量的文件(具体哪些文件问chatgpt),均未找到,只好通过 grep -r /usr/local/cuda-11.4/bin ~/,寻找所有出现/usr/local/cuda-11.4/bin的位置。

最终在vscode 相关目录找到

/home/user/.vscode-server/extensions/ms-python.python-2024.2.1/pythonFiles/deactivate/bash/envVars.txt

根据kimi的解释

go 复制代码
该路径 `/home/user/.vscode-server/extensions/ms-python.python-2024.2.1/pythonFiles/deactivate/bash/envVars.txt` 指向一个特定的文件,这个文件是Visual Studio Code(VS Code)的一个扩展相关联的脚本文件,具体来说是与Python相关的扩展。

在这个上下文中,`ms-python.python` 是由Microsoft提供的VS Code的Python语言支持扩展。扩展版本号为 `2024.2.1`。这个扩展提供了Python开发的各种功能,包括代码补全、调试、智能提示等。

`deactivate` 目录下的 `bash` 目录表明这个脚本是为bash shell编写的,而 `envVars.txt` 文件很可能包含了一些用于在bash环境中激活或取消激活Python虚拟环境时设置或取消设置环境变量的命令。

这个文件可能是由VS Code的Python扩展自动生成的,用于管理虚拟环境的激活和取消激活。当用户在VS Code中创建或删除一个Python虚拟环境时,这个文件可能会被更新,以确保bash shell正确地反映了虚拟环境的状态。

应该是该扩展维护的一个环境变量。

非vscode终端的PATH无问题

由上文可以推测,vscode污染了PATH,那么非vscode应该可以应该可以打印出正确的PATH 事实也是如此。直接用终端ssh登录

javascript 复制代码
/home/user/anaconda3/bin:/home/user/anaconda3/condabin:/usr/local/cuda-12.4/bin:/usr/local/cuda-11.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

打印出来的结果没有重复,并且12.4已经成功排在了11.4前面。

解决方法

/home/user/.vscode-server/extensions/ms-python.python-2024.2.1/pythonFiles/deactivate/bash/envVars.txt内的PATH修改为正确的,然后重启vscode,可以发现PATH是期望的值

相关推荐
Eiceblue2 天前
将 Python 列表导出为 Excel 文件:一维、二维、字典列表
开发语言·python·excel·visual studio code
深兰科技2 天前
深兰科技入选“2025中国新经济30强(行业之星)”,人工智能产业化能力获认可
人工智能·windows·ci/cd·phpstorm·visual studio code·深兰科技·gyic2025
user297525876123 天前
AI实践:结合LangChain实现一个自动生成项目README的VSCode插件
langchain·node.js·visual studio code
切糕师学AI6 天前
使用 VS Code 开发 C# 程序时,如何配置 launch.json
vscode·c#·visual studio code
草帽lufei10 天前
VSCode+PicGo实现Markdown图床自动同步
markdown·visual studio code
掘金安东尼11 天前
VSCode V1.107 发布(2025 年 11 月)
前端·visual studio code
单身的人上天堂11 天前
开发中使用iconfont预览太麻烦?我开发了一款VSCode插件来提升效率
前端·javascript·visual studio code
han_12 天前
手把手教你写一个VSCode插件,从开发到发布全流程
前端·javascript·visual studio code
小灰12 天前
VS Code插件的发布与自动化
visual studio code
想努力找到前端实习的呆呆鸟15 天前
vscode编写vue代码的时候一聚焦就代码块变白?怎么回事如何解决
vue.js·visual studio code