不推荐直接在系统 Python 环境安装 PyTorch,因其与 CUDA 版本强绑定,全局安装会锁死整台机器的 PyTorch 和底层依赖,导致多项目版本冲突、环境不可复现及 torch.cuda.is_available() 静默失效等问题。

不推荐直接在系统 Python 环境里装 PyTorch——它几乎必然导致后续项目出错或无法复现。
PyTorch 与 CUDA 版本强绑定,全局安装会锁死整台机器
PyTorch 不是普通 Python 包,它依赖特定版本的 cudatoolkit 和 cuDNN。比如:
-
torch==2.0.1+cu118只能跑在 CUDA 11.8 驱动上,装到全局环境后,所有其他项目(哪怕不用 GPU)都会被这个 CUDA 版本“绑架” - 如果你后来要跑一个老项目,它只兼容
torch==1.12.1+cu113,而系统驱动又升到了 12.1,全局卸载重装不仅慢,还可能让其他已部署脚本突然失效 - conda 安装时若没指定
-c pytorch,默认渠道的pytorch包往往不含 CUDA 支持,torch.cuda.is_available()返回False却不报错,调试半天才发现是环境问题
不同项目对 torch/torchvision/torchaudio 的版本组合要求完全不同
这三个包不是独立演进的,官方发布时就固定了配套关系。例如:
- YOLOv8 用
torch==2.0.1+torchvision==0.15.2,但换到torch==2.1.0就可能触发RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same - torchaudio 2.0.x 要求 Python ≥3.9,而你的 legacy 项目还在用 Python 3.8 —— 全局升级 Python 或降级 torchaudio 都会连锁破坏其他依赖
- pip install 时如果没加
--no-deps,它可能偷偷升级 numpy 或 pillow 到不兼容版本,而你根本没意识到是 PyTorch 安装命令引发的
conda 创建环境比 venv 更可靠,尤其涉及 CUDA 和二进制依赖
venv 只隔离 Python 包,但 CUDA 库、FFmpeg、OpenCV 等底层二进制依赖仍走系统路径。conda 能统一管理:
立即学习“Python免费学习笔记(深入)”;
- 用
conda create -n pt20-cu118 python=3.9创建环境后,conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia会自动拉取匹配的 cudnn、cudatoolkit 和 CPU 加速库 - conda 环境可导出为
environment.yml,含 Python 版本、channel 优先级、非 PyPI 包(如ffmpeg),比requirements.txt更完整 - 避免混用 pip 和 conda:在 conda 环境里用 pip 装包,可能绕过 conda 的依赖解析,导致
libcudart.so.11.0: cannot open shared object file这类运行时报错
真正容易被忽略的是:PyTorch 的 CUDA 支持不是“装了就行”,而是“装对版本 + 环境干净 + 驱动匹配”三者缺一不可。虚拟环境不是锦上添花,它是把这三件事拆开控制的唯一手段。


















