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

相关推荐
阿虎儿6 小时前
免费解锁 GitHub Copilot 无限次使用
visual studio code
Mr_Lucifer21 小时前
「一句话」生成”小红书“式金句海报(CodeFlicker + quote-poster-generator)
人工智能·aigc·visual studio code
子玖1 天前
让你的文章里俏皮的添加emoji
程序员·markdown·visual studio code
奔跑路上的Me1 天前
vscode终端显示分支信息在Windows 和 mac电脑上的配置
visual studio code
天朝八阿哥2 天前
使用Docker+vscode搭建离线的go开发调试环境
后端·docker·visual studio code
敲敲敲敲暴你脑袋5 天前
写个添加注释的vscode插件
javascript·typescript·visual studio code
golang学习记5 天前
GitLens 十大神技:彻底改变你在 VS Code 中的 Git 工作流
前端·后端·visual studio code
小兵张健7 天前
为什么我放弃了 JetBrains 系列,转向 VSCode 等衍生物
visual studio code·jetbrains
晚风予星7 天前
Ant Design Token Lens 迎来了全面升级!支持在 .tsx 或 .ts 文件中直接使用 Design Token
前端·react.js·visual studio code
埃博拉酱8 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code