La proposition de Stephen est une bonne idée, mais malheureusement cela ne fonctionne pas si vous n'incluez que des exigences directes dans votre fichier, ce qui me semble plus clair.
Toutes les dépendances seront désinstallées, y compris même distribute
, se décomposant pip
.
Maintenir un fichier d'exigences propre tout en suivant la version d'un environnement virtuel
Voici comment j'essaie de suivre les versions de mon environnement virtuel. J'essaie de maintenir un minimum requirements.txt
, en incluant uniquement les exigences directes, et en ne mentionnant même pas les contraintes de version là où je ne suis pas sûr.
Mais en plus, je garde, et j'inclus dans le suivi de version (disons git), le statut réel de mon virtualenv dans un venv.pip
fichier.
Voici un exemple de workflow:
configuration de l'espace de travail virtualenv, avec suivi des versions:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
initialiser le système de suivi de version:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
installez un package avec des dépendances, incluez-le dans le fichier des exigences:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Maintenant, commencez à créer votre application, puis validez et démarrez une nouvelle branche:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
installez un package supplémentaire:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... jouez avec, puis revenez à la version précédente
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Désinstallez maintenant les packages superflus:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Je suppose que le processus peut être automatisé avec des hooks git, mais ne sortons pas du sujet.
Bien sûr, il est logique d'utiliser un système de mise en cache de paquets ou un référentiel local comme pip2pi