Ubuntu 上管理 PyTorch 依赖项的实用指南
一 环境隔离与基础准备
sudo apt update && sudo apt install -y python3 python3-pip python3-venv
python3 -m venv ~/venvs/pt310
source ~/venvs/pt310/bin/activate
pip install -U pip
conda create -n pt310 python=3.10 -y
conda activate pt310
sudo apt update
sudo apt install -y build-essential cmake git wget unzip yasm pkg-config \
libopenblas-dev liblapack-dev libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev python3-dev
python --version
pip --version
二 安装与选择 PyTorch 版本
pip install torch==2.6.0 torchvision==0.17.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cpu
pip install torch==2.6.0+cu126 torchvision==0.17.0+cu126 torchaudio==2.6.0+cu126 --index-url https://download.pytorch.org/whl/cu126
pip install torch==2.1.0+cu121 torchvision==0.16.0+cu121 torchaudio==2.1.0+cu121 --index-url https://download.pytorch.org/whl/cu121
conda install pytorch torchvision torchaudio cpuonly -c pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
nvidia-smi 查看驱动与 CUDA 运行时信息。pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名(PyTorch 官方 whl 建议直连)。python - <<'PY'
import torch, sys
print("torch:", torch.__version__, "cuda:", torch.version.cuda, "cudnn:", getattr(torch.backends.cudnn, "version", None))
print("cuda available:", torch.cuda.is_available())
print("device count:", torch.cuda.device_count())
PY
三 依赖项管理实践
# requirements.txt
torch==2.6.0+cu126
torchvision==0.17.0+cu126
torchaudio==2.6.0+cu126
numpy>=1.24
pandas>=2.0
scikit-learn
matplotlib
安装与升级:pip install -r requirements.txt
pip install -U -r requirements.txt # 升级
pip check # 检查冲突
poetry init -n
poetry add torch==2.6.0 --source pytorch-cpu # CPU 源示例
poetry add torchvision==0.17.0
poetry add torchaudio==2.6.0
pyproject.toml 中为不同平台设置源或版本标记(如 markers 区分 x86_64/aarch64/darwin),便于一套配置多环境复用。torch 与 torchvision/torchaudio 需保持小版本一致(如 2.6.x 对应 0.17.x),避免运行时 API 不匹配。四 常见问题与排查
pip check 与 pipdeptree 定位冲突包;必要时固定次要版本。nvidia-smi 显示的 CUDA Runtime 需与 PyTorch 的 cu126/cu121 等标签匹配;不匹配会导致 torch.cuda.is_available() 为 False。