一、前言及環境
1. 場景及整體思路
最近在做一個AI智能項目,開發過程中用自己的機子安裝了很多庫,開發完之后需要部署到公司內網的環境中,但是客戶那邊的環境是不能聯網的,於是就需要離線進行庫的安裝。
上網搜了一下,大概思路是:
- 從可以聯網電腦導出庫的名稱到文件;
- 下載指定庫到指定文件夾;
- 將庫名稱文件和安裝包拷貝到離線環境進行安裝
整體流程如下圖所示:
整個流程主要使用到庫管理工具pip,我用的是python安裝完已經存在的pip,沒有pip的可自行安裝。
2. 環境
- macosx 14.1
- python 3.7.2
注意:后面發現很多問題都是pip版本太低造成的,所以在往下做之前,可以先升級一下pip為最新版本:
python -m pip install -U pip
二、聯網下載庫
1. 導出庫信息
pip freeze > requirements.txt
這個命令是將已經通過pip安裝的包的名稱記錄到requirements.txt
文件中。
導出這個文件后,編輯文件,留下你需要的庫,其他刪除。
2. 下載庫安裝包
- 下載到當前目錄下的dist目錄,你可以選擇更換目錄
pip download ./dist -r requirements.txt
也可以直接進入目標文件夾然后執行:
pip download -r requirements.txt
將requirements.txt
中列出來的庫下載到packages文件夾。
這里要注意,因為我的pip版本比較新,所以用的download,據說老一點的版本應該是install --download:
pip install --download ./packages -r requirements.txt
注意:如果requirements.txt里面存在不能通過pip安裝的庫,下載過程會報錯。
三、離線安裝庫
1. 進行安裝
將requirements.txt
和packages
文件夾拷貝到需要離線安裝的服務器,
通過以下命令進行安裝:
pip install --no-index --find-links=./dist -r requirements.txt
根據pip版本不同,里面的參數有可能是--find-link
。
2. 安裝問題
- 使用MacOsx系統下載的離線安裝包,在CentOS7上無法正常安裝,觀察下包名,發現依賴包應該是單獨給Macosx定制的。
建議大家需要在指定操作系統部署,先在同樣的操作系統下進行download依賴包,這樣可以避免這個問題。