Предложение Стивена - хорошая идея, но, к сожалению, она не сработает, если вы включите в свой файл только прямые требования, что мне кажется более понятным.
Все зависимости будут удалены, в том числе даже 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.