scriptory/update-python-env.sh
Maks Snegov 3023edbfe3 update-python-env: fix empty .python-version situation
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.
2024-12-22 14:49:42 -08:00

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