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

相关推荐
萌萌哒草头将军1 天前
🎉🎉🎉Cursor 宣布完成 C 轮 9 亿美元融资,市场估值 99 亿美元!
visual studio code·cursor·trae
LinXunFeng1 天前
Flutter - GetX Helper 助你规范应用 tag
flutter·github·visual studio code
Jooolin1 天前
【编程史】IDE 是谁发明的?从 punch cards 到 VS Code
ai编程·visual studio code·编译器
vueTmp3 天前
VSCode 插件离线下载攻略
visual studio code
穷人小水滴7 天前
在 Android 设备上写代码 (Termux, code-server)
android·linux·visual studio code
哎呦你好11 天前
VS Code 安装后设置中文界面并添加常用插件的详细指南
编辑器·visual studio code
魔术师ID20 天前
vue2.0 组件生命周期
前端·javascript·vue.js·学习·visual studio code
MingT 明天你好!20 天前
在vs code 中无法运行npm并报无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
前端·npm·node.js·visual studio code
Ynov24 天前
详细解释api
javascript·visual studio code
程序员Bears1 个月前
现代前端工具链深度解析:从包管理到构建工具的完整指南
前端·python·visual studio code