针对于客户纯内网环境部署python项目,最优的解决方式当然是docker部署。若使用宿主机部署方式,如何解决依赖问题就是一个大问题,常见的部署包管理器有:apt,yum。这里以Ubuntu为例,示例如何解决依赖问题。
1. 系统模块依赖
针对系统包的缺失,可以有两种方式解决:
搭建系统源
准备离线依赖包
apt-get命令提供了download-only参数,可以把安装模块所需要的所有依赖包下载到本地,如:
1
apt-get install --download-only build-essential
下载好的包默认路径为:
/var/cache/apt/archives
将下载的依赖包打包拷贝到目标服务器
安装
1
dpkg -i *.deb
2. python包依赖
备注:导出项目依赖包
1 | pipreqs ./ --encoding=utf-8 |
和系统依赖流程类似,python依赖解决也有两种办法:
搭建pypi源
下载pypi仓库就是一个庞大的工程,部署项目不推荐。
离线安装依赖包
pip download -r requirement.txt
通过download,将项目需要的依赖包下载到本地
将下载好的依赖包拷贝到目标服务器
安装
1
ls | grep "*.whl" | xargs pip install
若依赖包目录中包含源码安装的包,如:xxx.tar.gz,可以一起安装
1
ls | xargs pip install