Есть несколько аргументов:
Используйте репозитории / PPA, потому что они будут поддерживать стабильность и актуальность исправлений безопасности.
Это в основном правда. Если, например, вы устанавливаете, python-django
как у меня, вы получаете обновления безопасности. Это хорошо, потому что вам нужно только придерживаться apt, но вы все равно должны проверять что-то перед тем, как загружать обновления (хотя тестирование должно выполняться каждый раз).
Вы можете утверждать, что если вы используете pip
, вы никогда не сможете проверить наличие обновлений.
Используйте, pip
чтобы вы могли использовать правильные "стабильные" версии.
В этом нет никаких сомнений: репозитории отстают от реального мира. Django - это 2.0, но в репозиториях для LTS-версии Ubuntu (которую придерживаются многие люди для серверов) вы получаете только 1.8 на Ubuntu 16.4 lts с Python 2, но все равно получаете обновления безопасности для него.
pip
дает вам последние все время. Вы просто должны обновить их самостоятельно.
Обновление установленной на Python установки Python может быть кошмаром
Когда вы обновляете Ubuntu до следующей версии, он обновляет множество пакетов. Многое меняется. Я знаю, что в Django это означает, что вы должны следить за несовместимостью кода, устареванием ... Но то же самое относится ко всему другому коду Python.
То же самое верно, pip
но с pip
вами можно сделать одну вещь за один раз. Вы знаете, что вызывает проблемы, поэтому вы знаете, где искать, чтобы найти решение.
pip
+ virtualenv
позволяет хранить вещи отдельно
virtualenv
позволяет иметь переносимые маленькие среды Python. Это позволяет вам иметь несколько разных сред Python, работающих рядом на одном компьютере.
Кажется очевидным благом для обслуживания, так как вы можете управлять средой так же, как вы управляете кодом. Даже хранить среду в VCS тоже ... но вы должны помнить, что наличие двенадцати различных virtualenv
сред означает двенадцать сред, которые необходимо проверить и обновить.
Редактировать: После ужасной серии обновлений на сервере, чтобы перевести его с Lucid на Precise, я переключился со смешанного Apt + pip (nr 1 и 2) на чистый pip + virtualenv (nr. 4). Вместо одного virtualenv на сайт, у меня есть один общий для нескольких сайтов. Это работает на данный момент.
Мне также пришлось написать небольшой скрипт, который проверяет состояние пакетов, установленных с помощью pip. Если есть обновления, я должен применить их вручную (это хорошо, потому что я тестирую их локально, в локальном virtualenv). Это все еще немного болезненнее, чем было изначально, но намного лучше в долгосрочной перспективе.