离线环境下Linux部署python环境

目录

  • 引言
  • 网上其他方式尝试
      • 下载miniconda Linux版本
        • 安装miniconda3
        • 初始化conda
        • 激活base环境
      • 在window上打包conda环境
        • 把虚拟环境 my_env 打包为 my_env.tar.gz
        • -o 参数指定打包路径和名称,把虚拟环境 my_env 打包为 out_name.tar.gz
        • 把某个特定路径的虚拟环境打包为 my_env.tar.gz
      • 在离线环境下安装
        • 在annaconda中创建目录 `my_env`,并将环境解压至该目录
        • 激活环境,同时这步操作会将路径 `my_env/bin` 添加到环境变量 path
        • 在环境中运行python
      • 结果
  • 生成whl包和requirements.txt文件
      • 有网环境安装anaconda环境
        • 创建python环境
        • 使用环境
        • 换源
        • 下载包
        • 获得whl包
        • 生成requirments.txt
        • 将上面两个生成的东西拷贝到离线环境
        • 离线环境安装conda环境
        • 在base环境下安装

引言

当有需要在离线环境下为Linux服务器安装对应环境的需求时,本文是标准的流程。
所要安装的环境:centos7.9 安装pytorch环境

网上其他方式尝试

首先我的window下是用的conda的python环境,首先想到的是利用conda的打包功能将环境打包。具体步骤如下:

下载miniconda Linux版本

从 清华源下载anaconda Linux版本,我使用的是Anaconda3-2019.10-Linux-x86_64.sh。

安装miniconda3

bash ./Anaconda3-2019.10-Linux-x86_64.sh

初始化conda

/opt/anaconda3/bin/conda init

激活base环境

source \~/.bashrc\

这一步是离线环境下的conda安装和环境启用,这里在之后的文章中会多次用到,当出现安装conda环境时就是进行上面的步骤

在window上打包conda环境

把虚拟环境 my_env 打包为 my_env.tar.gz

conda pack -n my_env

-o 参数指定打包路径和名称,把虚拟环境 my_env 打包为 out_name.tar.gz

conda pack -n my_env -o out_name.tar.gz

把某个特定路径的虚拟环境打包为 my_env.tar.gz

conda pack -p /explicit/path/to/my_env

在离线环境下安装

在annaconda中创建目录 my_env,并将环境解压至该目录

mkdir -p my_env
tar -xzf my_env.tar.gz -C my_env

激活环境,同时这步操作会将路径 my_env/bin 添加到环境变量 path

source my_env/bin/activate

在环境中运行python

(my_env) $ python

结果

使用conda env list 命令能够显示对应的环境,不过使用环境时python版本才2.7,应该是centos7.9默认python版本,没有试过在完全相同的centos7.9环境中下载打包能否成功,不过如果是那样的话不如直接将anaconda3/envs/my_env/Lib/site-packages全部复制到离线环境下的相同目录下***(注意anaconda3的版本和必须完全一致)***,这个方法是可以成功的不过与我们的标准部署就背道而驰,假如你的项目需要发布,则这种方式就不规范,因为不可能限定生产环境的conda环境,万一生产环境有其他项目部署,且他们的conda环境与这个项目不同就会部署失败。***正确的做法应该是提供whl安装包和requirements.txt 很多开源项目也是这么做的。***接下来我会介绍这种做法。

生成whl包和requirements.txt文件

windows的conda环境是无论如何也无法移植到centos7.9上的,所以还是需要使用centos7.9的conda环境来下载相关包。可以使用虚拟机运行一个centos7.9环境。使用vmware非常简单可以看这篇 博客。

有网环境安装anaconda环境

见上文

创建python环境

conda create -n XXX python=3.8

使用环境

source activate XXX;

换源

中科大源

pip config set global.index-url <https://mirrors.ustc.edu.cn/pypi/web/simple>

清华源

pip config set global.index-url <https://pypi.tuna.tsinghua.edu.cn/simple>

下载包

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu 

获得whl包

mkdir whl
pip wheel torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --wheel-dir /whl

生成requirments.txt

pip freeze > requirments.txt

这个requirment.txt是不是很熟悉,在很多开源项目中都是存在的,他们就是通过这种方式发布。
这里需要注意的是必须是在install情况下产生的requirments.txt才是正确的,***如果是pip download 先下载,再使用本地下载的whl包进行安装,这种情况下pip freeze参数的包信息就不正确。***可以试一下在本文的操作结束过后在离线环境下使用pip freeze产生的requirments

将上面两个生成的东西拷贝到离线环境

mkdir wheel

拷贝到wheel文件中

离线环境安装conda环境

见上文

在base环境下安装

pip install --no-index --find-links=./wheels -r ./wheel/requirements.txt

也可以不使用requirements.txt直接通过pip install ./wheels/*.whl来进行安装,不过那样就不规范了。

你可能感兴趣的:(linux,python,运维)