任务:将windows开发的python工程部署到离线Ubuntu服务器中。
目标机器无法上网,没有办法直接 pip install -r requirements.txt
安装依赖。而且目标机器跟开发机器操作系统不同,直接拷贝site-package也行不通。
经过探索,最佳实践如下:
1. 在虚拟机或者windows子系统中,新建跟目标机器一样的操作系统,安装相同版本python
这个虚拟机是能够上网的,所以这一步比较简单,用它来下载目标机器的依赖。
2. 在虚拟机上下载依赖
pip download -r requirements.txt -d wheelfiles -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
这样,项目依赖就会存入wheelfiles
文件夹内
3. 文件导入目标机器
需要导入文件有:
- 项目工程代码
- requirements.txt
- wheelfiles 文件夹
- python安装包:python.tgz
- python安装包依赖:zlib.tar.gz
4. 离线安装zlib和python
安装python3之前需要安装zlib,否则会报错。安装的过程就是标准四连:
(0). tar -xzf xxx
解压
(1). ./config
配置
(2). make
构建
(3). make install
安装
注意 配置python3时,推荐加入参数 ./configure --enable-optimizations --with-lto
, 以提升性能。
5. 查看python状态
用下面的指令,确保后续步骤使用正确的python
# 查看安装的python版本位置
whereis python
# 查看当前绑定状态
update-alternatives --display python
# python 绑定版本 最后的数字代表优先级,数字越大,优先级越高
update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# 切换版本
update-alternatives --config python
# 查看版本
python -V
6. 创建虚拟环境,完成依赖隔离
python -m venv venv
source venv/bin/activate
python --version
7. 安装依赖
# 在离线服务器中安装依赖
pip install -r requirements.txt --no-index --find-links path/to/wheels
使用上述命令,直接从导入的wheels包中安装依赖。
网友评论