python專案打包虛擬環境

2021-10-12 02:31:07 字數 4500 閱讀 3211

python專案打包時,需要將虛擬環境與python自身安裝路徑下的lib包整合在一起,將如下內容儲存為packvenv.s**件,修改python_path(python的安裝路徑)以及venv_path(虛擬環境的全路徑)為自己的目錄,然後給檔案新增執行許可權:chmod +x packvenv.sh,./packvenv.sh執行即可

linux: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() " == "-info" || "$" == ".pyc" || "$" == ".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

windows:packvenv.bat

set wd=%cd%

set packagepath=%wd%\win-build

set "virtualenv=venv"

set "virtualenvpath=c:\users\administrator\envs"

set "python_home=c:\python27"

set "python_dll=c:\windows\syswow64\python27.dll"

:: get python version for the runtime build ex. 2.7.1 will be 27

for /f "tokens=1 delims=." %%g in ('%python_home%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') do set python_major=%%g

for /f "tokens=2 delims=." %%g in ('%python_home%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') do set python_minor=%%g

set "python_version=%python_major%%python_minor%"

mkdir "%packagepath%\%virtualenv%" > nul || exit /b 1

mkdir "%packagepath%\bin" > nul || exit /b 1

echo copying python dlls...

xcopy /s /i /e /h /y "%python_home%\dlls" "%packagepath%\%virtualenv%\dlls" > nul || exit /b 1

echo copying python lib...

xcopy /s /i /e /h /y "%python_home%\lib" "%packagepath%\%virtualenv%\lib" > nul || exit /b 1

rd /q /s "%packagepath%\%virtualenv%\lib\site-packages" 1> nul 2>&1 || rd /q /s "%packagepath%\%virtualenv%\lib\site-packages" 1> nul 2>&1

echo copying virtual environment...

xcopy /s /i /e /h /y "%virtualenvpath%\%virtualenv%\lib" "%packagepath%\%virtualenv%\lib" > nul || exit /b 1

if %python_major% == 2 (

:: 如果site-packages中有backports模組,則需要執行此語句,這是因為python3以前該模組少個__init__.py檔案

echo fixing backports.csv for python 2 by adding missing __init__.py...

type nul >> "%packagepath%\%virtualenv%\lib\site-packages\backports\__init__.py"

)

echo cleaning up unnecessary *.pyc *.pyo and tests files...

for /r "%packagepath%\%virtualenv%" %%f in (*.pyc *.pyo) do del /q "%%f" >nul 2>&1

for /r "%packagepath%\%virtualenv%" %%f in (tests) do rd /s /q "%%f" >nul 2>&1

echo staging python...

copy %python_dll% "%packagepath%\bin" > nul || exit /b 1

copy %python_home%\python.exe "%packagepath%\bin" > nul || exit /b 1

copy %python_home%\pythonw.exe "%packagepath%\bin" > nul || exit /b 1

exit /b 0

python專案虛擬環境搭建

一.虛擬環境搭建目的 乙個專案乙個環境,防止各個專案互相干擾,專案更加簡潔,利於打包.二.使用 pip install virtualenv 安裝 建立虛擬環境 cd my project dirvirtualenv p usr bin python.exe venv p引數指定python直譯器程...

Python虛擬環境專案例項

這裡想象一下需求,寫乙個專案使用的一系列1.0版本的外掛程式,現在要新寫乙個專案,需要用這些外掛程式的2.0版本,該怎麼辦?都更新成2.0版本?這樣之前的專案都沒法維護了 這時我們需要乙個虛擬環境,python就支援這樣乙個外掛程式,virtualenv 下面來安裝一下 1.pip3 install...

建立python虛擬環境並打包python檔案

當需要為乙個離線環境部署python應用時,離線環境可能缺少各種python環境,有docker的話可以用docker,沒有docker可以用pyinstaller打包成二進位制檔案。pyinstaller會打包當前所有用pip安裝的包,所以建議在虛擬環境中打包python應用。安裝virtuale...