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...