Что является наиболее питоническим: установка модулей Python через менеджер пакетов (macports, apt) или через pip / easy_install / setuptools - PullRequest
11 голосов
/ 13 октября 2009

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

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

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

Ответы [ 2 ]

17 голосов
/ 13 октября 2009

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

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

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

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

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

17 голосов
/ 13 октября 2009

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

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

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

...