python虚拟环境打包_python项目打包虚拟环境

python项目打包时,需要将虚拟环境与python自身安装路径下的lib包整合在一起,将该文件保存为packvenv.sh,放入虚拟环境目录下,chmod +x packvenv.sh,./packvenv.sh执行即可

#!/bin/bash

PYTHON_PATH=/usr/local/python2.7

VENV_PATH=~/.virtualenvs/venv-linux6

VENV_NAME=`basename $VENV_PATH`

echo $VENV_NAME

mkdir $VENV_NAME

mkdir $VENV_NAME/bin

# copy python lib

cp -r $PYTHON_PATH/lib $VENV_NAME/lib

rm -rf $VENV_NAME/lib/python2.7/site-packages

# copy venv python

cp $VENV_PATH/bin/python $VENV_NAME/bin/ || exit 1

# copy venv lib

packdir=$VENV_PATH/lib/python2.7

for e in `ls $packdir`

do

files=$packdir/$e

realfiles=`readlink $files`

if [ $realfiles ]; then

cp -r $realfiles $VENV_NAME/lib/python2.7/

else

cp -r $files $VENV_NAME/lib/python2.7/

fi

done

# remove .pyc .pyo and test files

remove_pyc_and_pyo_files() {

for e in `ls $1`

do

fullpath=$1/$e

if [[ "${e:0-5}" == "-info" || "${e:0-4}" == ".pyc" || "${e:0-4}" == ".pyo" || "$e" == "test" ]]; then

echo delete file:$fullpath

rm -rf $fullpath

elif [ -d $fullpath ]; then

remove_pyc_and_pyo_files $fullpath

fi

done

}

remove_pyc_and_pyo_files $VENV_NAME/lib/python2.7

rm -rf $VENV_NAME/lib/pkgconfig

cd $VENV_NAME/lib

ln -s python2.7 python

你可能感兴趣的:(python虚拟环境打包)