工作中经常会碰到在服务器上安装Python包的情景,但公司服务器一般不能连接互联网,这就需要在个人电脑上先将该Python包所有依赖下载下来,再拷贝至服务器进行安装。好在pip命令能帮我们自动完成这一操作,之前年轻不懂事,都是傻傻地一个一个下载,看得多学得多了,本事也见长,效率也更高。下面以离线打包pyecharts所有依赖包,并在服务器上安装,进行演示:
一、写在前面
注意:个人电脑上的Python版本,务必和服务器上的Python版本一致,且操作系统和硬件平台也要一致,比我这里都是Python3.6.12,linux内核操作系统(centos),x86_64架构;我的个人笔记本装的是win10,所以我用VM VirtualBox虚拟了一个Ubuntu操作系统,同属linux内核系统,x86_64架构;如果不能保持一致,就很难办了,因为pip命令下载的包版本,是根据自动判断的系统平台架构来的。不同架构间不能通用。
二、离线安装单个包及其所有依赖
以,pyecharts为例
1.在个人笔记本上,将所有依赖包下载到指定目录:
pip download pyecharts -d ./pyecharts_packages
下载完成后,pyecharts_packages目录如下:
可以看到,自动下载了所有依赖,包括pyecharts包自身。
2.拷贝到服务器后,安装:
pip install --no-index --find-links=./pyecharts_packages pyecharts
可以看到,安装成功了。
三、离线安装整个Python环境及其所有依赖
为了方便打包这个环境,并到服务器离线复现环境,同时将方法附上,过程类似。
1.执行
pip freeze > requirements.txt
把当前环境安装的模块包输入文件内,注意这个是当前环境所有的,所以最好的方式是每个项目单独虚拟Python环境,这样导出的是纯净的依赖
2.再执行
pip download -r requirements.txt -d ./pip_packages
将依赖包全部下载下到 pip_packages 目录下
3.最后将这些包拷贝到服务器上,执行
pip install --no-index --find-links=./pip_packages -r requirements.txt
安装全部依赖,复现Python环境,当然,前提是你要先安装好对应版本的Python。
至此,完成所有操作。