Пропозиція Стівена - приємна ідея, але, на жаль, вона не працює, якщо ви додаєте до свого файлу лише прямі вимоги, що для мене звучить чистіше.
Усі залежності будуть видалені, в тому числі навіть distribute
, що само розбиваються pip
.
Підтримка чистого файлу вимог під час відстеження версій віртуального середовища
Ось як я намагаюся відстежувати версії мого віртуального середовища. Я намагаюся підтримувати мінімум requirements.txt
, включаючи лише прямі вимоги, і навіть не згадуючи обмеження версії, де я не впевнений.
Але крім того, я зберігаю і включаю в відстеження версій (скажімо git), фактичний стан мого virtualenv у venv.pip
файлі.
Ось зразок робочого процесу:
налаштування робочої області virtualenv із відстеженням версій:
mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate
ініціалізувати систему відстеження версій:
git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"
встановити пакет із залежностями, включити його у файл вимог:
echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
Тепер починайте створювати свій додаток, а потім виконайте комітування та запустіть нову гілку:
vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"
встановити додатковий пакет:
echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip
... пограйте з нею, а потім поверніться до попередньої версії
vim manage.py
git commit -am "Playing with flask-script"
git checkout master
Тепер видаліть сторонні пакети:
pip freeze | grep -v -f venv.pip | xargs pip uninstall -y
Я припускаю, що процес можна автоматизувати за допомогою git хуків, але не будемо відходити від теми.
Звичайно, тоді має сенс використовувати якусь систему кешування пакунків або локальне сховище, як pip2pi