任務(wù):將windows開發(fā)的python工程部署到離線Ubuntu服務(wù)器中。
目標(biāo)機器無法上網(wǎng),沒有辦法直接 pip install -r requirements.txt 安裝依賴。而且目標(biāo)機器跟開發(fā)機器操作系統(tǒng)不同,直接拷貝site-package也行不通。
經(jīng)過探索,最佳實踐如下:
1. 在虛擬機或者windows子系統(tǒng)中,新建跟目標(biāo)機器一樣的操作系統(tǒng),安裝相同版本python
這個虛擬機是能夠上網(wǎng)的,所以這一步比較簡單,用它來下載目標(biāo)機器的依賴。
2. 在虛擬機上下載依賴
pip download -r requirements.txt -d wheelfiles -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
這樣,項目依賴就會存入wheelfiles文件夾內(nèi)
3. 文件導(dǎo)入目標(biāo)機器
需要導(dǎo)入文件有:
- 項目工程代碼
- requirements.txt
- wheelfiles 文件夾
- python安裝包:python.tgz
- python安裝包依賴:zlib.tar.gz
4. 離線安裝zlib和python
安裝python3之前需要安裝zlib,否則會報錯。安裝的過程就是標(biāo)準(zhǔn)四連:
(0). tar -xzf xxx 解壓
(1). ./config 配置
(2). make 構(gòu)建
(3). make install 安裝
注意 配置python3時,推薦加入?yún)?shù) ./configure --enable-optimizations --with-lto, 以提升性能。
5. 查看python狀態(tài)
用下面的指令,確保后續(xù)步驟使用正確的python
# 查看安裝的python版本位置
whereis python
# 查看當(dāng)前綁定狀態(tài)
update-alternatives --display python
# python 綁定版本 最后的數(shù)字代表優(yōu)先級,數(shù)字越大,優(yōu)先級越高
update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# 切換版本
update-alternatives --config python
# 查看版本
python -V
6. 創(chuàng)建虛擬環(huán)境,完成依賴隔離
python -m venv venv
source venv/bin/activate
python --version
7. 安裝依賴
# 在離線服務(wù)器中安裝依賴
pip install -r requirements.txt --no-index --find-links path/to/wheels
使用上述命令,直接從導(dǎo)入的wheels包中安裝依賴。