easy_install / pip или apt-get

Как отмечалось на вики-странице Ubuntu на Rails , рекомендуется, чтобы gems управлял вашими зависимостями Rails / Ruby.

Какова лучшая практика с пакетами Python, такими как Django? Должен ли я установить их через apt-get или позволить easy_install / pip получить их из PyPi?

30
задан 11 January 2011 в 13:36

2 ответа

Есть несколько аргументов:

  1. Используйте репозитории / PPA, потому что они обеспечат вам стабильность и актуальность с исправлениями безопасности.

    1121 Это в основном верно. Если, например, вы установите python-django как я, вы получите обновления безопасности. Это хорошо, потому что вам нужно только придерживаться apt, но вы все равно должны проверять что-то, прежде чем отправлять обновления (хотя тестирование должно выполняться каждый раз).

    Вы можете утверждать, что если вы использовали pip, вы никогда не сможете проверять наличие обновлений.

  2. Используйте pip, чтобы вы могли использовать правильные «стабильные» версии.

    1123 Нет никаких сомнений: репозитории отстают от реального мира. Django - это 2.0, но в репозиториях для LTS-версии Ubuntu (которую придерживаются многие люди для серверов) вы получаете только 1.8 на Ubuntu 16.4 lts с Python 2, но все же получаете обновления безопасности для него.

    pip дает вам самое последнее время. Вам просто нужно обновить их самостоятельно.

  3. Обновление используемой в репозитории установки Python может быть кошмаром

    Когда вы обновляете Ubuntu до следующей версии, он обновляет множество пакетов. Многое меняется. Я знаю, что в Django это означает, что вы должны следить за несовместимостью кода, устареванием ... Но то же самое относится ко всему другому коду Python.

    То же самое верно для pip, но с pip вы можете делать одну вещь за раз. Вы знаете, что вызывает проблемы, поэтому вы знаете, где искать исправление.

  4. pip + virtualenv позволяет вам хранить вещи отдельно

    virtualenv позволяет вам иметь переносимые, маленькие среды Python. Это позволяет вам иметь несколько разных сред Python, работающих рядом на одном компьютере.

    Кажется, очевидное благо для обслуживания, так как вы можете управлять средой так же, как вы управляете кодом. Даже хранить среду в VCS тоже ... , но вы должны помнить, что наличие двенадцати различных virtualenv с означает двенадцать сред, которые вам необходимо проверить и обновить.


Редактировать: После ужасной серии обновлений на сервере, чтобы получить его от Lucid до Precise, я переключился со смешанного Apt + pip (nr 1 и 2) на чистый pip + virtualenv (№ 4) ситуация. Вместо одного virtualenv на сайт, у меня есть один общий для нескольких сайтов. Это работает на данный момент.

Мне также пришлось написать небольшой скрипт, который проверяет состояние пакетов, установленных с помощью pip. Если есть обновления, я должен применить их вручную (это хорошо, потому что я тестирую их локально, в локальном virtualenv). Это все еще немного более болезненно, чем было изначально, но намного лучше в долгосрочной перспективе.

0
ответ дан 11 January 2011 в 13:36
  • Пакеты из репозиториев

    Они должны быть установлены, когда ваше приложение каким-то образом относится к Ubuntu . Они гарантируют вам стабильную версию, которую вы можете установить на компьютеры с Ubuntu, они поддерживаются и иногда более зрелые, чем та, которую вы получаете через pip. Если вы развертываете несколько серверов Ubuntu или пишете приложения для Ubuntu, используйте их, если они доступны .

    Они также иногда содержат специфичные для Ubuntu модификации.

  • pip vs easy_install

    О них особо нечего сказать, как сказал хакер Django Джеймс Беннетт:

    Пожалуйста, ради любви Гвидо, прекратите использовать setuptools и easy_install, вместо этого используйте distutils и pip.

    Подробное обсуждение различий см. В Об упаковке Джеймса Беннетта (из django) и Несколько исправлений «Об упаковке» Яна Бикинга. (из Mozilla).

Если вы хотите быть в безопасности, попробуйте свои пипсы, используя virtualenv . Это дает вам изолированную среду Python, поэтому вы можете быть уверены, что ваше приложение будет работать на любом компьютере.

Подождите немного, я надеюсь, что некоторые люди не согласятся со мной.

0
ответ дан 11 January 2011 в 13:36

Другие вопросы по тегам:

Похожие вопросы: