离线环境下Linux部署python环境

引言

当有需要在离线环境下为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来进行安装,不过那样就不规范了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值