有时因为限制,我们不能够在目标机器上使用网络安装 Python 环境,那么如何离线构建 Anaconda 虚拟环境,以及如何离线安装各种 Python 库,就是一个必须要思考的问题。我会在这篇文章里介绍我在离线安装 Anaconda 和配置 Python 环境方面的一些经验。
离线构建 Python 环境的构建需要:
在有网的机器上:
- 下载服务器对应的 conda 安装包
- 下载 Python 虚拟环境 pkg 文件
- 下载 Python 库的 whl 文件
在离线服务器上:
- 安装 conda
- 安装 Python 虚拟环境
- 安装 Python 库
提示:
- 如果离线服务器已经安装 conda,可以不用重复安装
- 如果离线服务器已经有你需要的 Python 版本对应的虚拟环境,可以使用
conda create --clone
克隆旧的虚拟环境
如果你使用的 Python 版本是 Python 3.7,那么直接下载最新的 Anaconda 即可,自带 Python 3.7 以及许多机器学习环境,只需要离线安装一些深度学习库,这部分内容可以参考下面的下载whl文件。
如果你使用 Python 3.7 以下的版本,如 Python 3.6,那么你可以只下载 Miniconda,然后通过 pkg 里先安装你想要的Python 版本。为什么不下载 Anaconda 呢?因为它很大,而且里面的 Python 版本并不是我们需要的版本。
目前最新的 Anaconda 和 Miniconda 下载链接:
- https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh
- https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
如果你遇到了网络问题,可以使用清华大学开源软件镜像站的 Anaconda 镜像:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
可以使用下面的命令来下载:
mkdir -p ~/Downloads/offline
cd ~/Downloads/offline
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
pip download
可以下载你所需要和依赖的 Python 库对应的 whl 安装包,但是你必须确保系统内核和 Python 版本一致。如果你使用的是 Mac,而目标机器是 Linux,那么你就不能够使用 pip download
命令很方便地下载所有依赖的 whl 文件。为了简化这一问题,我们可以使用 Docker 创建一个 Linux 环境来完成下载任务。
通过 -v
参数,我们可以将 Docker 内部的 /data
路径和本地的 ~/Downloads/offline
路径链接起来,这样当我们下载到 /data
时,就可以在本机的 ~/Downloads/offline
文件夹里看到。
docker run -it -v ~/Downloads/offline:/data -w /data continuumio/miniconda
通过添加清华大学开源软件镜像站的 Anaconda 镜像,我们可以加速下载过程。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
Anaconda 所有的库都是通过 pkg 安装的,我们只要下载这些 pkg 文件,即可创建我们想要的环境。
首先删除 miniconda docker 里已有的 pkg 文件,因为 miniconda 默认安装了 Python 2.7,我们不希望在安装 Python 3.6 的时候有 Python 2.7 的 pkg 文件。
然后我们创建一个 Python 3.6 环境。如果你希望安装 Python 的其他版本,可以在创建环境的时候自行修改版本号。
创建好环境以后,所有需要的 pkg 文件(后缀名是 .tar.bz2
)就会下载到 /opt/conda/pkgs
目录下,我们只需要把它们拷到 /data
目录下,即可在本机的下载文件夹里看见。
rm -rf /opt/conda/pkgs
conda create -n ypw python=3.6
source activate ypw
mkdir -p /data/pkgs
cd /opt/conda/pkgs
cp *.tar.bz2 /data/pkgs
通过添加清华大学开源软件镜像站的 Pypi 镜像,我们可以加速下载过程。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
whl 文件就是我们常说的 Python 库的安装文件,下面是我常用的 Python 库,你可以根据自己的需要进行修改。
mkdir -p /data/whls
cd /data/whls
pip download jupyter jupyter_contrib_nbextensions numpy pandas scikit-learn matplotlib opencv-python pillow tqdm torch torchvision tensorflow-gpu keras tensorboardx
下载好所有需要的离线安装包以后,我们就需要将它们传到离线服务器上,然后逐个安装。如果你的机器不支持rsync 命令,可以使用 scp 命令。
rsync -avP ~/Downloads/offline fat:~/
安装 conda 直接使用 bash 运行,然后按照提示进行即可。
bash ~/offline/Miniconda3-latest-Linux-x86_64.sh
先创建一个空环境,然后安装已经下载好的 pkg 文件,你就可以离线创建一个 Python 3.6 的环境。
conda create -n ypw --offline
source activate ypw
conda install --offline ~/offline/pkgs/*
最后,使用 pip 离线安装下载好的 whl 文件。
pip install --no-index --find-links=file:///home/richinfo/offline/whls jupyter jupyter_contrib_nbextensions numpy pandas scikit-learn matplotlib opencv-python pillow tqdm torch torchvision tensorflow-gpu keras tensorboardx