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是期望的值

相关推荐
移民找老国5 天前
加拿大移民新风向
java-ee·maven·phpstorm·visual studio code·nio
闪亮Girl8 天前
vs2015安装插件QtPackage.vsix等vsix文件类型
visual studio code
SuperYing9 天前
💯What?维护新老项目频繁切换node版本太恼火?开发一个vscode插件自动切换版本,从此告别烦恼
前端·visual studio code
羊小猪~~10 天前
数据结构C语言描述1(图文结合)--顺序表讲解,实现,表达式求值应用,考研可看
java·c语言·数据结构·c++·链表·visual studio code·visual studio
羊小猪~~10 天前
C/C++语言基础--C++模板与元编程系列三(变量模板、constexpr、萃取等…………)
java·c语言·开发语言·c++·visual studio code·visual studio
羊小猪~~13 天前
C/C++语言基础--C++模板与元编程系列二类模板、全特化、偏特化、编译模型简介、实现简单Vetctor等…………)
java·c语言·开发语言·c++·visual studio code·visual studio
编程老船长18 天前
用PlantUML让状态图“动”起来 —— 快速绘制老师申报课程流程
uml·visual studio code
风雪中的兔子21 天前
vscode插件开发入门:小试牛刀
前端·visual studio code
musiclvme22 天前
ubuntu22.04下GStreamer源码编译单步调试
ubuntu·音视频·visual studio code
Luncert23 天前
Vscode 插件开发 - TreeView
visual studio code