fpm 對python3.7.5虛擬環境進行打包

python3.7.5環境打包

打包前準備環境

可能是由於版本原因,fpm打包時默認會從系統拿默認的python來打包,即使進行虛擬環境也一樣。但是我們需要用python3。
所以首先把系統默認的python改爲3.7

cp /usr/bin/python3.7 /usr/bin/python
cp /usr/bin/pip3.7 /usr/bin/pip3.7

因爲打包virtualenv需要virtual-tools==1.0,但是1.0的virtual-tools在python3中並不兼容。

pkg_resources.DistributionNotFound: The 'virtual-tools==1.0' distribution was not found and is required by the application

所以先用pip3.7安裝virtual-tools3

pip install virtualenv-tools3

然後拷貝執行文件到目錄備份

cp /usr/local/python37/lib/python3.7/site-packages/virtualenv_tools.py ~

再重新裝virtual-tools==1.0

pip uninstall virtualenv-tools3
pip install virtualenv-tools==1.0

拷貝腳本覆蓋

cp ~/virtualenv_tools.py /usr/local/python37/lib/python3.7/site-packages/virtualenv_tools.py

這樣子就可以打包了

requirements.txt

aiodns==2.0.0
aiofiles==0.4.0
aiohttp==3.6.2
aiohttp-cors==0.7.0
aioredis==1.2.0
aredis==1.1.5
asn1crypto==0.24.0
async-generator==1.10
async-timeout==3.0.1
atomicwrites==1.3.0
attrs==19.1.0
beautifulsoup4==4.8.0
brotlipy==0.7.0
cchardet==2.1.4
certifi==2019.9.11
cffi==1.12.3
chardet==3.0.4
cryptography==2.7

before-install 腳本

pre_install_venv3.7.sh

#!/bin/sh
pyther=`which python3.7`
piper=`which pip3.7`

if [ -z $pyther ];then
        echo -e "\033[31m沒有找到python3.7路徑,請先安裝Python3.7並配置!\033[0m"
        exit 1
fi
if [ -z $piper ];then
        echo -e "\033[31m沒有找到pip3.7路徑,請先安裝Python3.7並配置!\033[0m"
        exit 1
fi

after-install 腳本

after_install_venv3.7.sh

#/bin/sh
pyther=`which python3.7`
piper=`which pip3.7`
env_dir=/data/devops/venv3.7
function ck_py(){
        if [ -z $pyther ];then
                echo -e "\033[31m沒有找到python3.7路徑,請先安裝Python3.7並配置!\033[0m"
                return 1
        else
                return 0
        fi
}

function link_py(){
        /bin/rm -rf $env_dir/bin/{python,python3,python3.7,pip,pip3,pip3.7}
        ln -s $pyther $env_dir/bin/python
        ln -s $pyther $env_dir/bin/python3
        ln -s $pyther $env_dir/bin/python3.7
        ln -s $piper $env_dir/bin/pip
        ln -s $piper $env_dir/bin/pip3
        ln -s $piper $env_dir/bin/pip3.7
}
echo -e "\033[33m====>替換python路徑\033[0m"
if ck_py
then
        link_py
        if [ $? == 0 ];then
                echo -e "\033[32m安裝成功!\033[0m"
                echo "export PY_VENV37=/data/devops/venv3.7" >> /etc/profile
                source /etc/profile
                exit 0
        else
                echo -e "\033[31m安裝失敗!\033[0m"
                exit 1
        fi
fi

打包

fpm -s virtualenv -t rpm -m test --name python-venv3.7-libs --before-install pre_install_venv3.7.sh --after-install after_install_venv3.7.sh --virtualenv-pypi https://pypi.tuna.tsinghua.edu.cn/simple  --prefix /data/devops/venv3.7/ requirements.txt
發佈了133 篇原創文章 · 獲贊 125 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章