WSL2中OpenCV Python运行YOLOv4遇CUDA版本不兼容错误求解
解决WSL2中CUDA驱动版本不匹配问题
1. 清理WSL中多余的CUDA Toolkit版本
同时安装多个CUDA版本易引发环境冲突,建议仅保留所需的11.7版本:
- 卸载CUDA 11.6:
sudo apt-get --purge remove cuda-11-6 sudo apt-get autoremove sudo rm -rf /usr/local/cuda-11.6 - 配置CUDA 11.7环境变量,编辑
~/.bashrc或~/.zshrc文件,添加:export PATH=/usr/local/cuda-11.7/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH - 使配置生效:
source ~/.bashrc - 验证配置正确性:
nvcc --version # 应输出11.7版本信息 echo $LD_LIBRARY_PATH # 应包含/usr/local/cuda-11.7/lib64路径
2. 确认Windows端驱动兼容性
尽管516.59理论支持CUDA 11.7,仍建议升级为NVIDIA针对WSL优化的驱动:
- 通过NVIDIA GeForce Experience检查并安装最新Game Ready驱动,或直接下载WSL专用驱动;
- 重启Windows系统及WSL2实例,确保驱动更新生效。
3. 验证OpenCV的CUDA支持状态
检查OpenCV是否正确编译并加载CUDA组件:
- 在Python中执行以下代码:
import cv2 print(cv2.cuda.getCudaEnabledDeviceCount()) print(cv2.getBuildInformation()) - 查看输出内容,确认存在
CUDA: YES标识,且CUDA版本为11.7,确保OpenCV关联了正确的CUDA Runtime。
4. 调整DNN目标配置
若以上步骤无效,尝试将FP16目标改为普通CUDA目标,规避可能的硬件兼容性问题:
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
5. 重启WSL2实例
环境变量或驱动变更后,需重启WSL使设置生效:
wsl --shutdown # 重新打开WSL终端即可
内容的提问来源于stack exchange,提问作者kusocodeing
相关产品推荐
相关产品推荐

