¿Cómo asegurarte de llamar a pip solo en virtualenv?

¿Cómo evitar llamar accidentalmente a pip cuando no estoy en un virtualenv?

Escribí el siguiente script llamado pip y lo agregué a mi ~/bin (que está antes de pip en mi $PATH ):

 # This script makes sure I don't accidentally install pip without virtualenv # This script requires $PIP to be set to the absolute path of pip to execute pip # if $PIP is not set, it will write a message if [ -z "$PIP" ]; then echo "you are not in a virtual env" echo "use virtual env or" # propose the second item in $PATH echo " export PIP="`type -ap pip|sed -n 2p` echo "to cleanup use" echo " unset PIP" else # execute pip exec $PIP "$@" fi 

¿Hay alguna manera mejor?

 export PIP_REQUIRE_VIRTUALENV=true 

Recomiendo poner esto en tu archivo ~/.bashrc :

 export PIP_REQUIRE_VIRTUALENV=true 

y también puede agregar la siguiente función a su ~/.bashrc que le permite llamar explícitamente a pip fuera de un entorno virtual si así lo elige:

 gpip() { PIP_REQUIRE_VIRTUALENV="" pip "$@" } 

Ahora todavía puedes usar tu versión pip global para hacer cosas como actualizar virtualenv:

 gpip install --upgrade pip virtualenv