python環境離線部署
當前生產環境中,有很多基於python開發的工具需要使用。
由於python工具往往涉及到很多依賴,線上狀態下,可以通過pip requirements來管理安裝。
但有時候,會遇到需要部署的環境,無法連線到pip源的情況。比如,客戶端處於內部網或者無網路連線的情況的情況。
在這種情況下,準備完全離線的安裝環境,可以大大降低工具部署成本。
在某專案中,開發了一個windows平臺下基於python的資料顯示工具。
假設客戶的電腦上什麼環境也沒有,以下步驟小結了如何進行離線部署。
準備工作
1. 準備乾淨的Python包
考慮到儘量精簡,在專案依賴不多的時候,建議使用python標準包部署環境。
在python官網或其他源上下載所需的python安裝包並安裝。
2. 建立一個python的虛擬環境
如果開發時沒有隔離虛擬環境,可以在此時隔離。
假設已下載安裝了標準Python包3.8,並安裝在了D:/python3.8/
進入CMD命令列
D:\python3.8\python.exe -m venv d:\virtual_env
當然,如果已經配置了Path的系統變數,可以直接
python.exe -m venv d:\virtual_env
建立好新環境後,在新環境d:\virtual_env
pip freeze > requirments_zero.txt
得到的應該是一個空檔案。
3. 在虛擬環境下安裝本專案需要的依賴,直到專案可以執行
將虛擬環境啟用(切換pycharm的interpreter或者active虛擬環境)
這時候,新專案所需的包是未安裝狀態的,也無法執行。
對於已經開發完畢的專案,應當已經記錄過一個requirements.txt,舉例來說,本專案依賴:
(以下為requirements.txt)
flask
flask-cors
paramiko
pyecharts
piexif
這5行已經記錄在了requirements.txt裡
可以通過
pip install -r requirements.txt
安裝
如果沒有記錄,則需要逐個排查安裝依賴庫
4. 生成含有所有依賴鏈的requirements.txt
當專案可以在新環境正常執行後,在新環境d:\virtual_env下
pip freeze > requirments_full.txt
會生成一個包含基於當前python版本的所有依賴鏈的清單,舉例來說,本專案依賴:
(以下為requirements_full.txt)
bcrypt3.2.0
cffi1.15.0
click8.0.3
colorama0.4.4
cryptography36.0.1
Flask2.0.2
Flask-Cors3.0.10
itsdangerous2.0.1
Jinja23.0.3
MarkupSafe2.0.1
paramiko2.9.2
piexif1.1.3
prettytable3.0.0
pycparser2.21
pyecharts1.9.1
PyNaCl1.5.0
simplejson3.17.6
six1.16.0
wcwidth0.2.5
Werkzeug2.0.3
5. 下載依賴鏈的所有whl
通過以下命令,可以
pip download -r requirements_full.txt -d ./packages
經過1~5步,已經得到了:
-
- python安裝包
- 2 requirements_full.txt
- 3 packages/ 資料夾
這3份資料可以在其他PC上離線部署python環境
新環境部署
拷貝python安裝包、requirements.txt 和 packages
- 安裝python
- 安裝好之後,進入命令列,輸入以下命令離線安裝packages
pip install --no-index --find-links=./packages -r requirements.txt