La propuesta de Stephen es una buena idea, pero desafortunadamente no funciona si solo incluye requisitos directos en su archivo, lo que me suena más limpio.
Se desinstalarán todas las dependencias, incluso distribute
, se descompondrá pip
.
Mantener un archivo de requisitos limpio mientras la versión rastrea un entorno virtual
Así es como trato de rastrear la versión de mi entorno virtual. Intento mantener un mínimo requirements.txt
, incluidos solo los requisitos directos, y ni siquiera mencionar las restricciones de versión donde no estoy seguro.
Pero además, guardo e incluyo en el seguimiento de versiones (digamos git), el estado real de mi virtualenv en un venv.pip
archivo.
Aquí hay un flujo de trabajo de muestra:
configurar el espacio de trabajo virtualenv, con seguimiento de versiones:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
inicializar el sistema de seguimiento de versiones:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
instale un paquete con dependencias, inclúyalo en el archivo de requisitos:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Ahora comience a construir su aplicación, luego confirme y comience una nueva rama:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
instalar un paquete adicional:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... juega con él y luego vuelve a la versión anterior
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Ahora desinstale los paquetes extraños:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Supongo que el proceso se puede automatizar con git hooks, pero no salgamos del tema.
Por supuesto, entonces tiene sentido usar algún sistema de almacenamiento en caché de paquetes o repositorio local como pip2pi