linux离线部署python环境

在项目上,使用的服务器常常是没有外网的,导致python及要用到的第三方相关库的安装部署不是那么方便,以下为一个较为不容易出错的环境部署步骤。

【注意:此方法的必要条件为要使用另一个连了外网的linux在线服务器】

Step1. 在在线服务器上安装对应版本的python

python版本与离线服务器上要用的或者要安装的版本相同,例如离线服务器上要用python3.7,那么就在在线服务器上安装python3.7。

最方便的方式是使用anaconda直接创建对应版本python的虚拟环境:

conda create --name env_python37 python=3.7

激活该虚拟环境:

source activate env_python37

当然,如果不想使用anaconda,也可以直接到python官网下载对应的python进行安装。

Step2. 在在线服务器上安装所需的第三方库

将要部署到离线服务器的代码放在在线服务器上,并尝试使用上一步安装的python跑通该代码,缺什么包就安装什么包,直到跑通。如果嫌麻烦,也可以直接安装要用到的包,并import尝试能不能正常导入即可。
pip 在线安装包的命令为(以pandas为例):

pip install pandas

如果下载缓慢,可以使用国内镜像源:

## 阿里云:
pip install ** -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
## 清华:
pip install ** -i https://pypi.tuna.tsinghua.edu.cn/simple

另外,如果没有使用anaconda安装python,并且该python不是默认的环境,则使用如下命令安装:

....\python -m pip install ** -i /https://......

其中“…\python” 为该python环境的路径,例如:/usr/bin/python3.7

Step3. 下载在线服务器python环境中的所有包

(1)将在线环境中的所有包及对应的版本信息写入到requirements文件:

pip freeze > requirements.txt
pip list --format=freeze > requirements.txt

(2)将requirements.txt里指定的包名和版本―【可根据需要,编辑requirements.txt,删除不需要打包的包】打包到默认packages文件夹下

pip download -d packages -r requirements.txt -i https://....

Step4. 离线服务器安装python

如果离线服务器已经有所需要的python或anaconda版本,则跳过此步。
(1)下载anaconda,下载地址:清华大学开源软件镜像站anaconda
这里选择Anaconda3-2021.11-Linux-x86_64.sh (anaconda与python版本的对应关系
(2)将下载好的anaconda拷贝到离线服务器上
(3)进入anaconda安装文件所在目录,运行.sh文件:

sh Anaconda3-2021.11-Linux-x86_64.sh

一路回车完成安装(如果要自定义安装位置,需手动输入)
(4)配置conda命令可以全局使用
刚安装anaconda环境完成时,conda命令是无法使用的,需要进行全局配置,配置方法如下:
vi或者vim命令编辑~/.bashrc文件, 命令:vim ~/.bashrc 在文件末尾添加如下内容:

export PATH='anaconda的安装目录/bin:$PATH'

“ESC”退出编辑模式, ":"进入命令模式,输入wq 保存退出;
然后让修改生效,执行命令:source ~/.bashrc

Step5. 离线安装所有已下载的包

将步骤3中的 requirements.txt 和 packages 文件夹拷贝到离线服务器上的同一目录下,并执行命令:

pip install --no-index --find-links=packages -r requirements.txt

总结

# 服务器A:
conda create --name env_python37 python=3.7
source activate env_python37
pip install *** 

pip freeze > requirements.txt
pip download -d packages -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

# 服务器B:
pip install --no-index --find-links=packages -r requirements.txt
Logo

更多推荐