Какой из них наиболее pythonic: установка модулей python через диспетчер пакетов (macports, apt) или через pip/easy_install/setuptools

Обычно я стараюсь устанавливать вещи через диспетчер пакетов, для unixy. Однако, когда я запрограммировал много perl, я бы использовал CPAN, более новые версии и все такое.

В общем, я использовал для установки системного материала через диспетчер пакетов, а язык - через собственный диспетчер пакетов (gem/easy_install | pip/cpan)

Теперь, используя python в первую очередь, мне интересно, что такое лучшая практика?

Ответ 1

Системная версия python и ее библиотеки часто используются программным обеспечением в дистрибутиве. Пока программное обеспечение, которое вы используете, довольны теми же версиями python и всех библиотек, что и ваш дистрибутив, чем использование пакетов дистрибутива будет работать нормально.

Однако нередко вам нужна версия для разработки пакетов или более новая версия или более старые версии. И тогда это больше не работает.

Поэтому обычно рекомендуется установить собственную версию Python, которую вы используете для разработки, и создать среды разработки с buildout или virtualenv или оба, чтобы изолировать системный python и среду разработки друг от друга.

Ответ 2

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

Профессиональные системные пакеты: системный упаковщик уже заботится о зависимости и соответствии общим политикам системы (например, макет файла). Системные пакеты предоставляют обновления для системы безопасности, все еще не заботясь о несовместимости с совместимостью - поэтому иногда они резервируют исправления безопасности, которые не поддерживали авторы upstream. Системные пакеты "безопасны". обновления системы: после обновления системы у вас, вероятно, также есть новая версия Python, но все ваши модули Python все еще существуют, если они поступают из системного пакета. Это все личный опыт работы с Debian.

Системные пакеты Con: не все программное обеспечение может быть предоставлено как системный пакет или не в последней версии; установка самого материала в систему может привести к поломке системных пакетов. Модернизация может нарушить ваше приложение.

Отдельная установка Pro: некоторые люди (в частности, разработчики веб-приложений) утверждают, что вам абсолютно нужна повторяемая настройка с помощью только тех пакетов, которые вы хотите, и полностью развязаны из системы Python. Это выходит за рамки автономных или системных пакетов, поскольку даже для самостоятельной установки вы все равно можете изменить системный python; с отдельной установкой вы не будете. Как обсуждает Леннарт, в настоящее время выделены цепочки инструментов для поддержки этой настройки. Люди утверждают, что только этот подход может гарантировать повторяемые результаты.

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