WSL2 深度学习环境配置:Ubuntu、CUDA、MMCV 与代理设置
文章目录
WSL2 深度学习环境配置:Ubuntu、CUDA、MMCV 与代理设置
本文整理 WSL2 下搭建深度学习开发环境时常用的配置项,包括 Ubuntu 图形界面、网络代理、CUDA Toolkit、MMCV,以及 conda 与 pip 混用时的排查思路。命令示例需要结合自己的 Windows、驱动和框架版本调整。
1. 配置前检查
开始前建议确认以下信息:
- Windows 已启用 WSL2,并安装了 Ubuntu 发行版;
- NVIDIA 驱动支持 WSL CUDA;
- 已明确项目所需的 Python、PyTorch、CUDA 和 MMCV 版本组合。
在 WSL 中可以先执行:
nvidia-smi
python --version
其中,nvidia-smi 能正常返回显卡与驱动信息,通常说明 WSL 已能访问 Windows 主机上的 NVIDIA 驱动。CUDA Toolkit、PyTorch 内置的 CUDA Runtime 与显卡驱动是不同层级,安装前不要混为一谈。
2. WSL2 图形界面:优先使用 WSLg
Windows 11 默认提供 WSLg,可直接运行 Linux 图形应用。大多数开发场景不需要在 WSL 中安装完整 Ubuntu 桌面或 GDM。
如果确实需要完整桌面会话,可安装桌面组件:
sudo apt update
sudo apt install ubuntu-desktop gdm3
需要注意:在 WSL 中启用 gdm3 依赖 systemd,且完整桌面会增加资源消耗,也可能与 WSLg 的使用方式冲突。只有在远程桌面或特定实验环境确有需求时再启用:
sudo systemctl enable gdm3
若安装过程中无法连接 Snap Store,优先检查 DNS、代理和网络连通性,而不是反复重装桌面环境。
3. 网络代理设置
Windows CMD 临时设置
下面设置仅对当前 CMD 窗口生效:
set http_proxy=http://127.0.0.1:7897
set https_proxy=http://127.0.0.1:7897
WSL / Linux 临时设置
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
在 WSL 的 NAT 网络模式下,127.0.0.1 未必指向 Windows 上的代理程序。可先确认代理软件是否允许局域网连接,再使用 /etc/resolv.conf 中的 nameserver 地址测试。
Python 中设置代理
在发起网络请求前设置环境变量:
import os
os.environ["HTTP_PROXY"] = "http://127.0.0.1:7897"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7897"
不要把包含账号、密码或订阅链接的代理地址提交到公开文章或代码仓库。
4. 用 conda 安装 CUDA Toolkit
先创建独立环境,避免污染已有项目:
conda create -n dl python=3.10 -y
conda activate dl
安装指定版本的 CUDA Toolkit:
conda install -c nvidia cuda-toolkit=11.8
只有在需要本地编译 CUDA 扩展时,再额外安装 cuda-nvcc:
conda install -c nvidia cuda-nvcc=11.8
也可以使用 conda-forge:
conda install -c conda-forge cudatoolkit=11.1 cudatoolkit-dev=11.1 -y
conda 安装的是用户态 Toolkit,不会替代 Windows 主机上的 NVIDIA 驱动。对于 PyTorch,优先按照 PyTorch 官网给出的命令安装与其版本匹配的 CUDA Runtime;不要仅凭 CUDA_PATH 判断框架实际使用的 CUDA 版本。
查看与卸载
nvcc --version
conda list | grep cuda
conda remove "cuda*" -y
在 Windows CMD 中,将 grep 替换为 findstr:
conda list | findstr cuda
切换 CUDA 版本时,建议为不同的 PyTorch/CUDA 组合创建独立 conda 环境。只修改 CUDA_PATH 往往不足以解决二进制依赖不匹配的问题。
5. MMCV 安装与版本关系
推荐先安装 OpenMMLab 的 openmim:
pip install -U openmim
mim install mmcv
安装前应先固定 PyTorch 与 CUDA Runtime。MMCV 的预编译包需要与它们匹配;如果没有匹配的 wheel,pip 可能转为本地编译,进而要求可用的编译器和 CUDA Toolkit。
版本命名也需要区分:
- MMCV 1.x 中,
mmcv是轻量版,mmcv-full包含 CUDA 算子; - MMCV 2.x 中,
mmcv对应原先的完整版能力,mmcv-lite不包含 CUDA 算子。
遇到导入或编译错误时,优先核对项目要求的 MMCV、PyTorch 和 CUDA 版本,而不是直接升级到最新版本。
6. conda 与 pip 混用的注意事项
conda 和 pip 的依赖解析相互独立。比较稳妥的顺序是:先用 conda 安装 Python、PyTorch 和系统级依赖,再用 pip 安装项目剩余依赖。
编译依赖当前环境中的 PyTorch 扩展时,可关闭 pip 的隔离构建:
export PIP_NO_BUILD_ISOLATION=1
python -m pip install . --no-build-isolation
Windows CMD 对应写法:
set PIP_NO_BUILD_ISOLATION=1
python -m pip install . --no-build-isolation
开发模式安装示例:
set DISTUTILS_USE_SDK=1
python -m pip install -e . --no-build-isolation -v
7. 显卡与版本兼容性
RTX 4060 属于 Ada 架构,建议使用较新的 NVIDIA 驱动,并优先选择项目官方支持的 PyTorch CUDA 版本,例如 CUDA 11.8 或 12.x 运行时。它并不存在“绝对不能使用某个更低 CUDA 版本”的简单结论,关键在于驱动、框架 wheel 和是否需要本地编译扩展。
Python 和 PyTorch 的兼容范围会随版本变化。创建环境前请查阅当前 PyTorch 发布页的版本矩阵,不要将某个项目的最低版本要求当作所有环境的通用限制。
8. 最后检查清单
python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available())"
python -c "import mmcv; print(mmcv.__version__)"
确认 torch.cuda.is_available() 返回 True 后,再继续安装检测、分割或训练框架,后续排查会更高效。
更多推荐




所有评论(0)