Even if .python-version is empty, virtualenv with desired name could be created somewhere in the system. So we need to delete it in any case. If there is no such virtualenv, we are ignoring errors.
44 lines
1.1 KiB
Bash
Executable File
44 lines
1.1 KiB
Bash
Executable File
if [ -z $1 ]; then
|
|
echo "Usage: $0 <python version> [ENV_NAME]"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f .python-version ]; then
|
|
echo "Not a python project: `pwd`"
|
|
exit 1
|
|
fi
|
|
|
|
PY_VER=$1
|
|
PROJECT=$2
|
|
if [[ $PROJECT == "" ]]; then
|
|
PROJECT=$(basename $PWD)
|
|
fi
|
|
|
|
echo "[*] Checking if required python version $PY_VER is installed"
|
|
pyenv versions | grep $PY_VER > /dev/null
|
|
res=$?
|
|
if [ $res -eq 1 ]; then
|
|
echo "Python $PY_VER is not installed. Run \"pyenv install $PY_VER\""
|
|
exit 1
|
|
fi
|
|
|
|
CUR_VENV=$(cat .python-version)
|
|
echo "[*] Removing current virtualenv ($CUR_VENV)"
|
|
pyenv virtualenv-delete -f $CUR_VENV || true
|
|
|
|
echo "[*] Removing virtualenv named as project ($PROJECT)"
|
|
pyenv virtualenv-delete -f $PROJECT || true
|
|
|
|
NEW_VENV=$PY_VER/envs/$PROJECT
|
|
echo "[*] Creating new virtualenv ($NEW_VENV)"
|
|
pyenv virtualenv $PY_VER $PROJECT || exit 1
|
|
echo $NEW_VENV > .python-version
|
|
|
|
echo "[*] Updating pip, setuptools and wheel"
|
|
pip install -U pip setuptools wheel || exit 1
|
|
|
|
if [ -f requirements.txt ]; then
|
|
echo "[*] Installing packets from requirements.txt"
|
|
pip install -Ur requirements.txt
|
|
fi
|