Proposal Stephen adalah ide yang bagus, tapi sayangnya itu tidak berhasil jika Anda hanya memasukkan persyaratan langsung dalam file Anda, yang terdengar lebih bersih bagi saya.
Semua dependensi akan dicopot, termasuk bahkan distribute, mogok pipsendiri.
Mempertahankan file persyaratan bersih saat pelacakan versi lingkungan virtual
Inilah cara saya mencoba melacak versi lingkungan virtual saya. Saya mencoba mempertahankan minimal requirements.txt, termasuk hanya persyaratan langsung, dan bahkan tidak menyebutkan batasan versi di mana saya tidak yakin.
Tapi selain itu, saya menyimpan, dan menyertakan dalam pelacakan versi (katakanlah git), status sebenarnya dari virtualenv saya dalam sebuah venv.pipfile.
Berikut ini contoh alur kerja:
menyiapkan ruang kerja virtualenv, dengan pelacakan versi:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
menginisialisasi sistem pelacakan versi:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
instal paket dengan dependensi, sertakan dalam file persyaratan:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Sekarang mulai buat aplikasi Anda, lalu komit dan mulai cabang baru:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
instal paket tambahan:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... mainkan, lalu kembali ke versi sebelumnya
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Sekarang hapus instalan paket asing:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Saya kira prosesnya dapat diotomatiskan dengan git hooks, tetapi jangan keluar topik.
Tentu saja, masuk akal untuk menggunakan beberapa sistem cache paket atau repositori lokal seperti pip2pi