La proposta di Stephen è una bella idea, ma sfortunatamente non funziona se includi solo requisiti diretti nel tuo file, il che mi sembra più pulito.
Tutte le dipendenze verranno disinstallate, incluso anche distribute
, scomponendosi pip
.
Mantenere un file dei requisiti pulito durante il monitoraggio della versione in un ambiente virtuale
Ecco come cerco di monitorare la versione del mio ambiente virtuale. Cerco di mantenere un minimo requirements.txt
, includendo solo i requisiti diretti, e senza nemmeno menzionare i vincoli di versione in cui non sono sicuro.
Ma inoltre, mantengo e includo nel monitoraggio della versione (ad esempio git), lo stato effettivo del mio virtualenv in un file venv.pip
file.
Ecco un esempio di flusso di lavoro:
configurare lo spazio di lavoro virtualenv, con monitoraggio della versione:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
inizializza il sistema di tracciamento della versione:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
installa un pacchetto con dipendenze, includilo nel file dei requisiti:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Ora inizia a creare la tua app, quindi esegui il commit e avvia un nuovo ramo:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
installa un pacchetto aggiuntivo:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... giocaci e poi torna alla versione precedente
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Ora disinstalla i pacchetti estranei:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Suppongo che il processo possa essere automatizzato con git hook, ma non andiamo fuori tema.
Naturalmente, ha senso quindi utilizzare un sistema di cache dei pacchetti o un repository locale come pip2pi