Python離線項目遷移部署


最近遇到了一個場景:需要將Python項目文件打包到無法聯網的主機上部署執行,本篇文章記錄針對於該場景的處理方案。

說明:

源主機(可聯網):安裝了Python3和pip3

目標主機(無法聯網):需安裝和源主機相同的Python版本和pip3,部署執行項目文件

主機系統為centos,Python版本為3.5.2,通過虛擬環境+pip進行遷移

目標主機離線安裝Python及pip3

源主機中下載所需包

Python3

首先,下載Python3,可以在官網或者通過源主機(可聯網的其它主機)wget:

wget --no-check-certificate https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 

Python3依賴包

然后,需要下載Python3的依賴包,可以通過centos鏡像中去copy,不過我更推薦用yum生成的方式:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel  epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel --downloadonly --downloaddir=/packages

命令執行完畢,你就會在/packages目錄下發現所需的所有.rpm文件。

如果,源主機中已經安裝了這些依賴,那么你可以用:

yum reinstall zlib-devel bzip2-devel openssl-devel ncurses-devel  epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel --downloadonly --downloaddir=/packages

打包:

zip -r packages.zip packages/

目標主機中安裝

將Python-3.5.2.tgz和packages.zip上傳至目標主機。

首先,安裝Python3依賴:

unzip packages.zip
cd packages/
rpm -Uvh  *.rpm --nodeps --force 

然后,安裝Python3:

tar -zxvf Python-3.5.2.tgz

mkdir /usr/local/python3
cd Python-3.5.2 
./configure --prefix=/usr/local/python3                    # 將Python3安裝在/usr/local/python3
make && make install                                       # 編譯安裝

ln -s /usr/local/python3/bin/python3 /usr/bin/python3      # 創建python3軟鏈接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3            # 創建pip3軟鏈接

安裝完畢,可通過:

Python3 -V
pip3 -V

查看並檢查安裝的版本

源主機中打包項目文件

若項目中創建虛擬環境,首先激活虛環境,然后進入項目文件,執行:

pip3 freeze > requirements.txt 

將當前項目中的庫列表生成並保存在requirements.txt中。

然后,通過pip生成批量離線安裝包(whl文件):

pip wheel --wheel-dir=./tmp/packages -r requirements.txt

執行完畢之后,你會發現/tmp/packages中包含了項目所需的所有.whl

打包項目文件:

zip A.zip A/

目標主機中部署

上傳A.zip至目標主機,創建虛環境,並激活(python3 自帶了venv):

python3 -m venv test_venv
cd test_venv
source bin/activate

解壓項目代碼A.zip,並切換:

unzip A.zip
cd A/

安裝項目Python依賴模塊:

pip3 install --no-index --find-links=tmp/packages -r requirements

安裝完畢,檢查:

pip3 freeze 

當然你也可以通過python命令行import進行檢驗哈哈。

最后,執行項目啟動腳本(startup.sh)部署:

chmod +x  ./startup.sh
nohup ./startup.sh > a-log 2>&1 &

以上,就完成了整個項目的遷移部署。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM