麒麟OS安装昇腾PyTorch必须手动编译Python 3.11+、使用华为镜像源安装torch_npu与ACL依赖,并确保NPU驱动和CANN版本匹配;系统默认Python和pip install torch均不适用。

直接结论:不能用系统默认Python,也不能直接pip install torch。麒麟、统信等国产OS预装的Python版本(常为3.7或3.8)与昇腾PyTorch适配包不兼容,且系统源中缺少torch_npu、acl等关键包。必须手动编译Python + 指定华为镜像源安装昇腾专用依赖。
确认昇腾硬件与驱动是否就绪
这是所有操作的前提,跳过会白忙活:
- 执行
npu-smi info—— 若报错command not found,说明昇腾驱动未安装或环境变量未生效;若输出中无设备信息,需检查物理卡槽、BIOS中NPU开关、或重装驱动 - 驱动和CANN版本必须匹配:例如CANN 7.0.RC1要求驱动版本 ≥ 24.1.rc1;低版本CANN(如5.x)无法支持
torch.nn.functional.interpolate等CLAP/GLM-OCR常用算子 - 麒麟OS V10 SP3及以上才默认集成
npu-smi,旧版需手动从华为官网下载Ascend-driverdeb/rpm包安装
编译安装独立Python(绕过系统包管理器)
国产OS的apt或yum升级Python极易破坏系统稳定性,必须隔离安装:
- 下载Python 3.10.12或3.11.9源码(昇腾PyTorch 2.8+明确要求Python ≥ 3.11):
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz - 编译时加
--enable-optimizations并指定前缀:./configure --prefix=/opt/python311 --enable-optimizations - 安装后创建软链接:
sudo ln -sf /opt/python311/bin/python3.11 /usr/local/bin/python3,避免影响系统Python - 验证:
python3 --version输出应为3.11.9,且which python3指向/usr/local/bin/python3
安装昇腾专用PyTorch与ACL依赖
关键在源和版本——官方PyPI和conda默认源均无torch_npu,必须用华为镜像:
立即学习“Python免费学习笔记(深入)”;
- 创建干净虚拟环境:
python3 -m venv ascend_env && source ascend_env/bin/activate - 强制使用华为PyTorch源:
pip install torch==2.8.0+ascend torchvision==0.20.0+ascend --index-url https://download.pytorch.org/whl/ascend/cpu - ACL Python接口需从本地安装(路径因CANN版本而异):
pip install /usr/local/Ascend/ascend-toolkit/latest/pyACL/python/site-packages/acl-*.whl - 注意:CentOS 7需额外装
python3-devel,否则acl编译失败;Ubuntu 22.04需确认libglib2.0-0已安装,否则torch_npu加载时报GLIBC_2.34 not found
验证环境是否真正可用
光import成功不够,得跑通NPU张量计算:
- 写个最小验证脚本
check_npu.py:
import torch
print("PyTorch version:", torch.__version__)
print("CUDA available:", torch.cuda.is_available()) # 这里应为False
print("NPU available:", torch.npu.is_available()) # 这里必须为True
x = torch.randn(3, 3).npu()
y = torch.randn(3, 3).npu()
z = torch.mm(x, y) # 触发NPU矩阵乘
print("NPU tensor device:", z.device)- 运行
python check_npu.py,若输出NPU available: True且无ACL_ERROR类错误,才算通过 - 常见失败点:
LD_LIBRARY_PATH未包含/usr/local/Ascend/ascend-toolkit/lib64;用户对/dev/davinci*设备节点无读写权限(需sudo usermod -aG wheel $USER并重新登录)
最易被忽略的是环境变量持久化——set_env.sh只在当前shell生效,必须把source /usr/local/Ascend/ascend-toolkit/set_env.sh写入~/.bashrc,否则新终端启动后torch.npu直接不可用。另外,国产OS的SELinux或Firewalld有时会拦截NPU设备访问,首次失败时可临时setenforce 0快速定位是否是策略问题。



















