安裝pyenv
curl https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
安裝python
安裝依賴
1. yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
修改python 文件的下載地址
比如3.6.8
vim /home/admin/.pyenv/plugins/python-build/share/python-build/3.6.8
python下載地址替換為:
https://mirrors.huaweicloud.com/python/
2. pyenv install 3.6.8
安裝venv-pack
3. /home/admin/.pyenv/versions/${lang_version}/bin/pip install venv-pack
安裝pyenv-virtualenv ()
git clone https://github.com/pyenv/pyenv-virtualenv.git /home/admin/.pyenv/plugins/pyenv-virtualenv
應(yīng)用的編譯命令
效果:可以打包編譯機(jī)器上的python虛擬環(huán)境到服務(wù)器上,直接使用安裝包進(jìn)行啟動(dòng)鳄炉,而不需要在目標(biāo)服務(wù)器上安裝依賴包
前提是編譯機(jī)器和運(yùn)行機(jī)器上的一些二進(jìn)制依賴包要版本一致验毡。
echo "run before build"
cd ${WORKSPACE}
virtualenv_name="${JOB_NAME}"
clean_old_env="disable"
pip=/home/admin/.pyenv/versions/${virtualenv_name}/bin/pip3
if [[ "${clean_old_env}" == "enable" ]]; then
pyenv virtualenv-delete ${virtualenv_name}
fi
pyenv virtualenv ${lang_version} ${virtualenv_name}
${pip} install --upgrade pip
${pip} install -r requirements.txt || { echo "安裝依賴失敗"; exit 1; }
eval "$(pyenv virtualenv-init -)"
export PYENV_ROOT="/home/admin/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
pyenv activate ${virtualenv_name}
/home/admin/.pyenv/versions/${lang_version}/bin/venv-pack -o envs.tar.gz
echo "安裝虛擬環(huán)境完成"
mkdir build
zip -ry -q build/${app_name}-${BUILD_VERSION}.zip ./*