VSCode中.ipynb文件torch.cuda.is_available()返回False问题求助
问题原因排查与解决方法
针对你遇到的VSCode中.ipynb文件无法识别GPU,但同环境.py文件和JupyterLab正常的问题,核心原因大概率是VSCode的Jupyter内核环境配置异常,具体分析和解决步骤如下:
可能的原因及对应解决方法
1. VSCode未正确关联conda环境的Jupyter内核
虽然sys.executable显示路径正确,但VSCode可能默认使用了其他内核(比如系统默认的Python),或者内核的环境变量未正确加载。
- 解决:打开VSCode命令面板(Ctrl+Shift+P),执行
Jupyter: Select Kernel,选择标注为Python (env2)的内核;如果没有该选项,先在终端激活env2环境,执行pip install ipykernel && python -m ipykernel install --user --name env2 --display-name "Python (env2)",再重新选择内核。
2. VSCode Jupyter扩展缓存了旧的环境信息
扩展缓存可能导致内核启动时未加载最新的CUDA环境变量,即使路径正确也无法识别GPU。
- 解决:在命令面板执行
Jupyter: Reset Kernels,关闭并重新打开.ipynb文件,再次测试torch.cuda.is_available()。
3. VSCode Remote-SSH连接时未加载CUDA环境变量
SLURM集群中,VSCode Remote连接的是非交互式Shell,可能不会自动加载~/.bashrc或~/.profile里的CUDA配置(比如LD_LIBRARY_PATH),而终端和JupyterLab是交互式Shell,能正常加载。
- 临时测试:在.ipynb的第一个单元格手动添加环境变量:
如果返回True,说明是环境变量问题。import os # 替换为你集群的CUDA 10.1路径 os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-10.1/lib64:' + os.environ.get('LD_LIBRARY_PATH', '') import torch print(torch.cuda.is_available()) - 永久解决:打开VSCode设置,搜索
remote.SSH.remoteEnv,添加CUDA相关环境变量:
保存后重新连接SLURM集群。"remote.SSH.remoteEnv": { "LD_LIBRARY_PATH": "/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH", "PATH": "/usr/local/cuda-10.1/bin:$PATH" }
4. Jupyter内核启动时的资源绑定问题
部分SLURM节点需要显式绑定GPU资源,VSCode的Jupyter内核可能未自动获取GPU权限,但终端运行.py文件时环境已自动绑定。
- 解决:在VSCode的终端中,先通过SLURM命令申请GPU资源(比如
srun --gres=gpu:1 --pty bash),再在该终端中启动VSCode的Jupyter内核。
内容的提问来源于stack exchange,提问作者manon chossegros
相关产品推荐
相关产品推荐

