Python離線項目遷移部署

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

說明:python

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

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

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

目標主機離線安裝Python及pip3

源主機中下載所需包

Python3ui

首先,下載Python3,能夠在官網或者經過源主機(可聯網的其它主機)wget:命令行

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

Python3依賴包code

而後,須要下載Python3的依賴包,能夠經過centos鏡像中去copy,不過我更推薦用yum生成的方式:sqlite

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文件。ip

若是,源主機中已經安裝了這些依賴,那麼你能夠用:

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 &

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

相關文章
相關標籤/搜索