已完成的python專案-環境離線部署

坦先生的AI資料室發表於2022-02-12

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
cffi
1.15.0
click8.0.3
colorama
0.4.4
cryptography36.0.1
Flask
2.0.2
Flask-Cors3.0.10
itsdangerous
2.0.1
Jinja23.0.3
MarkupSafe
2.0.1
paramiko2.9.2
piexif
1.1.3
prettytable3.0.0
pycparser
2.21
pyecharts1.9.1
PyNaCl
1.5.0
simplejson3.17.6
six
1.16.0
wcwidth0.2.5
Werkzeug
2.0.3

5. 下載依賴鏈的所有whl

通過以下命令,可以

pip download -r requirements_full.txt -d ./packages

經過1~5步,已經得到了:

    1. python安裝包
  • 2 requirements_full.txt
  • 3 packages/ 資料夾
    這3份資料可以在其他PC上離線部署python環境

新環境部署

拷貝python安裝包、requirements.txt 和 packages

  1. 安裝python
  2. 安裝好之後,進入命令列,輸入以下命令離線安裝packages
pip install --no-index --find-links=./packages -r requirements.txt

相關文章