Linux 离线环境下 Anaconda3 与核心机器学习库(scikit-learn/OpenCV/PyTorch)安装配置指南
目录
Linux 离线环境下 Anaconda3 与核心机器学习库(scikit-learn/OpenCV/PyTorch)安装配置指南
前言
一、准备工作:提前下载所需文件
1.1 Anaconda3 安装包
1.2 各机器学习库的 .whl 文件
关键版本对应关系
注意事项
二、Step 1:安装 Anaconda3
2.1 赋予安装包执行权限
2.2 运行安装脚本
安装过程关键提示
2.3 验证 Anaconda 安装
三、Step 2:创建并激活 Conda 虚拟环境
3.1 创建环境
3.2 激活环境
四、Step 3:离线安装各机器学习库
4.1 安装依赖库(numpy、scipy 等)
4.2 安装 scikit-learn
验证安装
4.3 安装 OpenCV 3.X
步骤 1:解决系统依赖(可选但重要)
步骤 2:安装 OpenCV .whl 文件
验证安装
4.4 安装 PyTorch 1.8.X + torchvision 0.9.X
安装命令
验证安装(区分 CPU/GPU 环境)
五.在 Anaconda 环境中运行 Python 文件(.py)
五、常见问题与解决方案
5.1 问题 1:pip install 提示 “whl is not a supported wheel on this platform”
5.3 问题 3:PyTorch torch.cuda.is_available() 输出 False(GPU 机器)
六、总结
前言
在实际开发中,我们常遇到无网络 / 弱网络的 Linux 环境(如内网服务器、隔离计算节点),此时无法通过 conda install
或 pip install
直接拉取在线资源。本文针对这一场景,详细讲解如何利用提前下载的 Anaconda3 安装包 和各库的 .whl 文件,完成从环境搭建到库配置的全流程,确保 scikit-learn、OpenCV 3.X、PyTorch 1.8.X、torchvision 0.9.X 等核心库正常运行。
一、准备工作:提前下载所需文件
离线安装的核心是 “提前备好所有资源”。需在有网络的机器上下载以下文件,再通过 U 盘、SCP 等方式传输到目标 Linux 机器(建议统一放在 /opt/offline_pkgs
目录,后续操作更便捷)。
1.1 Anaconda3 安装包
- 下载地址:Anaconda 历史版本页
- 选择原则:
- 系统架构:Linux 对应
Linux-x86_64.sh
(64 位系统,主流选择); - 版本适配:推荐
Anaconda3-2021.05-Linux-x86_64.sh
(内置 Python 3.8,与后续 PyTorch 1.8.X 兼容性最佳)。
- 系统架构:Linux 对应
- 示例文件名:
Anaconda3-2021.05-Linux-x86_64.sh
1.2 各机器学习库的 .whl 文件
.whl 文件需严格匹配 Python 版本(如 3.8 对应 cp38
)、系统架构(linux_x86_64
)和 CUDA 版本(PyTorch 需区分 CPU/CUDA 版本)。
关键版本对应关系
库 | 依赖核心 | 推荐 .whl 版本标识(示例) | 下载来源 |
---|---|---|---|
scikit-learn | Python 3.6-3.9 | scikit_learn-1.0.2-cp38-cp38-linux_x86_64.whl | PyPI scikit-learn 页 |
OpenCV 3.X | Python 3.6-3.9 | opencv_python-3.4.18.65-cp38-cp38-linux_x86_64.whl | PyPI OpenCV 页 |
PyTorch 1.8.X | CUDA 10.2/11.1 或 CPU | torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl | PyTorch 历史版本页 |
torchvision 0.9.X | 与 PyTorch 匹配 | torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl | 同上,需与 PyTorch CUDA 版本一致 |
注意事项
- Python 版本:确保 .whl 文件名中的
cpXX
与 Anaconda 内置 Python 版本一致(如 Anaconda3-2021.05 对应 Python 3.8,即cp38
); - CUDA 版本:若目标机器有 NVIDIA 显卡且需 GPU 加速,需先确认显卡支持的 CUDA 版本(
nvidia-smi
查看),再下载对应 PyTorch 版本(如 CUDA 11.1 对应+cu111
,无 GPU 则选+cpu
); - 依赖提前下:scikit-learn、OpenCV 依赖
numpy
、scipy
等库,建议一并下载对应 .whl(如numpy-1.23.5-cp38-cp38-linux_x86_64.whl
),避免安装时因缺依赖失败。
二、Step 1:安装 Anaconda3
Anaconda 是 Python 环境管理工具,可隔离不同项目的依赖,避免版本冲突。
2.1 赋予安装包执行权限
打开 Linux 终端,进入存放 Anaconda 安装包的目录(如 /opt/offline_pkgs
),执行以下命令赋予权限:
bash
cd /opt/offline_pkgs
chmod +x Anaconda3-2021.05-Linux-x86_64.sh
2.2 运行安装脚本
执行安装脚本,按提示完成配置:
bash
bash Anaconda3-2021.05-Linux-x86_64.sh
安装过程关键提示
- 阅读许可协议:按
Enter
继续,按Space
翻页,最后输入yes
同意; - 选择安装路径:默认路径为
/home/用户名/anaconda3
,若需自定义(如/opt/anaconda3
),直接输入路径后按Enter
(自定义路径需确保当前用户有写入权限,可提前sudo chown 用户名:用户组 /opt/anaconda3
); - 是否初始化 Conda:输入
yes
(自动配置环境变量,避免后续手动添加)。
2.3 验证 Anaconda 安装
关闭当前终端,重新打开(使环境变量生效),执行以下命令:
bash
conda --version
# 预期输出:conda 4.10.3(版本与 Anaconda 对应,略有差异正常)python --version
# 预期输出:Python 3.8.8(与 Anaconda 内置版本一致)
三、Step 2:创建并激活 Conda 虚拟环境
建议为机器学习项目创建独立的 Conda 环境(避免污染 base 环境),命名为 ml_env
(可自定义)。
3.1 创建环境
指定 Python 版本为 3.8(与 Anaconda 内置版本一致,避免兼容性问题):
bash
conda create -n ml_env python=3.8 --offline
--offline
:离线模式,不联网拉取资源(因 Python 已在 Anaconda 安装包中,无需额外下载)。
3.2 激活环境
bash
conda activate ml_env
激活后,终端前缀会显示 (ml_env)
,表示当前处于该环境中。
四、Step 3:离线安装各机器学习库
所有 .whl 文件已放在 /opt/offline_pkgs
,在激活的 ml_env
环境中,通过 pip install
离线安装。
4.1 安装依赖库(numpy、scipy 等)
先安装基础依赖,避免后续库安装失败:
bash
# 进入 whl 文件目录
cd /opt/offline_pkgs# 安装 numpy(scikit-learn/OpenCV 依赖)
pip install numpy-1.23.5-cp38-cp38-linux_x86_64.whl# 安装 scipy(scikit-learn 依赖)
pip install scipy-1.9.3-cp38-cp38-linux_x86_64.whl
4.2 安装 scikit-learn
bash
pip install scikit_learn-1.0.2-cp38-cp38-linux_x86_64.whl
验证安装
bash
python -c "import sklearn; print('scikit-learn 版本:', sklearn.__version__)"
# 预期输出:scikit-learn 版本:1.0.2
4.3 安装 OpenCV 3.X
OpenCV 离线安装易缺系统依赖(如 libGL.so.1
),需先处理。
步骤 1:解决系统依赖(可选但重要)
若后续 import cv2
报错 libGL.so.1: cannot open shared object file
,需提前安装 libgl1-mesa-glx
(Ubuntu 为例):
- 在有网络机器下载
libgl1-mesa-glx
的 deb 包:libgl1-mesa-glx 下载页(选择对应系统版本,如 Ubuntu 20.04 选focal
); - 传输到目标机器,执行安装:
bash
sudo dpkg -i libgl1-mesa-glx_20.2.6-0ubuntu0.20.04.1_amd64.deb
步骤 2:安装 OpenCV .whl 文件
bash
pip install opencv_python-3.4.18.65-cp38-cp38-linux_x86_64.whl
验证安装
bash
python -c "import cv2; print('OpenCV 版本:', cv2.__version__)"
# 预期输出:OpenCV 版本:3.4.18
4.4 安装 PyTorch 1.8.X + torchvision 0.9.X
PyTorch 与 torchvision 版本必须严格匹配(1.8.X 对应 0.9.X),且需与 CUDA 版本一致。
安装命令
bash
# 安装 PyTorch 1.8.X(以 CUDA 11.1 版本为例,CPU 版本替换为对应 whl 文件名)
pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl# 安装 torchvision 0.9.X(需与 PyTorch CUDA 版本一致)
pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
验证安装(区分 CPU/GPU 环境)
bash
python -c "
import torch
import torchvision
print('PyTorch 版本:', torch.__version__)
print('torchvision 版本:', torchvision.__version__)
print('CUDA 是否可用:', torch.cuda.is_available()) # GPU 环境应输出 True,CPU 输出 False
"
- 预期输出(GPU 环境):
plaintext
PyTorch 版本:1.8.0+cu111 torchvision 版本:0.9.0+cu111 CUDA 是否可用:True
五.在 Anaconda 环境中运行 Python 文件(.py)
- 打开 Anaconda Prompt(Windows)或终端(macOS/Linux)
- 激活你要使用的环境(如果使用默认环境可以跳过):
bash
conda activate 你的环境名称
- 切换到 Python 文件所在的目录,例如:
bash
cd /path/to/你的文件目录 # Linux/macOS cd C:\path\to\你的文件目录 # Windows
- 运行 Python 文件:
bash
python 你的文件名.py
五、常见问题与解决方案
5.1 问题 1:pip install
提示 “whl is not a supported wheel on this platform”
- 原因:.whl 文件版本与当前 Python 版本 / 系统架构不匹配(如用了
cp39
的 whl 但 Python 是 3.8); - 解决:重新下载对应
cpXX
(Python 版本)和linux_x86_64
(系统架构)的 whl 文件。
5.2 问题 2:import cv2
报错 “libGL.so.1: cannot open shared object file”
- 原因:缺少 OpenCV 依赖的系统库
libgl1-mesa-glx
; - 解决:按 4.3 步骤 1 安装对应的 deb 包。
5.3 问题 3:PyTorch torch.cuda.is_available()
输出 False(GPU 机器)
- 原因 1:CUDA 版本与 PyTorch whl 不匹配(如显卡支持 CUDA 10.2,但装了
+cu111
的 PyTorch); - 原因 2:未安装 NVIDIA 显卡驱动;
- 解决:
- 执行
nvidia-smi
查看显卡支持的 CUDA 版本; - 重新下载对应 CUDA 版本的 PyTorch whl;
- 若
nvidia-smi
报错,需先安装显卡驱动(离线驱动安装需提前下载对应.run
文件)。
- 执行
六、总结
Linux 离线环境下的库安装核心是 “提前准备 + 版本匹配”,关键步骤可归纳为:
- 在有网络机器下载 Anaconda 安装包和各库的 .whl 文件(严格匹配 Python/CUDA/ 系统架构);
- 安装 Anaconda 并创建独立 Conda 环境;
- 按 “依赖库→核心库” 的顺序,用
pip install
离线安装; - 安装后通过简单代码验证各库是否正常运行。
完成以上步骤后,即可在离线 Linux 环境中开展机器学习、计算机视觉相关开发(如用 scikit-learn 做数据挖掘、OpenCV 做图像处理、PyTorch 训练深度学习模型)。