this post was submitted on 29 Jun 2023
362 points (97.9% liked)

Programmer Humor

19817 readers
35 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] Mikina 13 points 2 years ago* (last edited 2 years ago) (4 children)

I've recently discovered pipenv, and it has been a massive QoL improvement. No need to figure out bazillion of commands just to create or start an environment, or deal with what params should you use for it like you do with venv. You just pipenv install -r requirements.txt, and everything is handled for you. And when you need to run it, just pipenv run python script.py and you are good to go.

The best thing however are the .pipfiles, that can be distributed instead of requirements.txt, and I don't get why it's not more common. It's basically requirements, but directly for pipenv, so you don't need to install anything and just pipenv run from the same folder.

[โ€“] HarryEffingPotter 4 points 2 years ago* (last edited 2 years ago)

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
}
load more comments (3 replies)