HarryEffingPotter@programming.devtoProgrammer Humor@programming.dev•xkcd #1987: Python EnvironmentEnglish
1·
1 year agoNah why dont you guys just have a separate VPS for each individual project and just sudo install every python package?
Nah why dont you guys just have a separate VPS for each individual project and just sudo install every python package?
Yeah but is it really worse than python3-venv like some people act like it is? I just don’t see it.
thats when you do
/usr/bin/python3.11 -m pip install
mother. fucking. hardcoded paths. 1 step forward, 10 steps backward.
Yessssss
I actually wrote a script to make a folder an instant pipenv environment for me. Add it to your ./.zshrc. Has saved me a ton of time, I just removed some spaghetti lines that would reinstall pip and shit because it’s when I was still early days into Py dev, now I work more with Py than I do C# and I’m a senior C# engineer, I just enjoy the masochism of py.
Also added a check for Arch/Ubu.
# Automated python virtual environment.
#######################################
VENV(){
if ! [ -x "$(command -v pipenv)" ]; then
echo "pipenv not installed... installing it now!"
sudo pip install pipenv
OS="$( ( lsb_release -ds || cat /etc/*release || uname -om ) 2>/dev/null | head -n1 )"
if [[ "$OS" == *"buntu"* ]]; then
sudo apt install pipenv -y
elif [[ "$OS" == *"rch"* ]]; then
sudo pacman -S pipenv
fi
pip install pipenv --upgrade
echo "Installation complete!"
fi
if [ -n "$1" ]; then
echo -e "Args detected, specifically using version $1 of python in this project!"
version="$1"
else
version=$(python -V)
version=$(echo "$version" | sed -e 's/Python //')
if [ -z "$version" ]; then
version=$(python3 -V)
if [ -z "$version" ]; then
echo "No python version installed... exiting."
return
fi
fi
fi
echo -e "\n===========\nCreate a Python $version virtual environment in $PWD/.venv [y/n]?\n==========="
read -r answer
case $answer in
[yY][eE][sS]|[yY])
export PIPENV_VENV_IN_PROJECT=1
pipenv --python "$version"
pipenv install -r ./requirements.txt
echo -e "\n\n\nVirtual python environment successfully created @ $PWD/.venv!\n"
echo -e "To run commands from this dir use 'pipenv run python ./main.py'"
echo -e "To enter a shell in this venv use 'pipenv shell'."
echo -e "To install from a requirements text file use 'pipenv install -r requirements.txt'"
echo -e "To update pip + all pip modules use 'pipenv update'!\n"
echo -e "Additional information can be found @ https://pipenv-fork.readthedocs.io/en/latest/basics.html"
;;
[nN][oO]|[nN])
echo "Fine then weirdo why did you run the command then, jeez.Exiting"
;;
*)
echo "Invalid input..."
;;
esac
}
VS Code SSH extension (with errorlens and shellcheck/pylance) literally changed my life. I cannot praise that shit enough.