2017-02-02 28 views
0

Я запутался о возможностях установки внешних пакетов Python:При установке внешних пакетов python global, когда локально? пип или системный пакет-менеджер?

  1. установить пакет с локальным pip в /home/chris/.local/lib/python3.4/site-packages
    $ pip install --user packagename

  2. установить пакет глобального с pip в /usr/local/lib/python3.4/site-packages
    (разрешения суперпользователя требуется)
    $ pip install packagename

  3. установить пакет глобального с zypper в /usr/lib/python3.4/site-packages
    (разрешения суперпользователя требуется)
    $ zypper install packagename

Я использую OpenSuse с пакетом-менеджером zypper и иметь доступ к корню пользователя.

Я (думаю) знают о том, что pip:
- pip просто загружает последнюю версию.
- Для установленных пакетов не будет проверяться, доступны ли новые версии.
- Собственные пакеты могут быть установлены в виртуальном env.
- занимает больше времени для загрузки и установки, чем zypper.
- Возможна локальная или глобальная установка.

Пакет-менеджер моей системы:
- Выполняется загрузка и установка быстрее.
- Устанавливает пакет только по всему миру.

Мой вопрос в том, когда и почему я должен выполнить установку: pip (локальный, глобальный) или с zypper?
Я много читал об этой проблеме, но не мог четко ответить на этот вопрос ...

ответ

0

Материал под/usr/lib - это системные пакеты, которые считаются частью ОС. Вероятно/возможно, что сценарии и службы ОС будут иметь зависимости от этих компонентов. Я бы порекомендовал не касаться их самостоятельно или действительно использовать или в зависимости от них для пользовательских скриптов, так как это повлияет на вашу ОС приложения или даже на версию ОС. Используйте их при написании сценариев, которые выполняются на системном уровне, например, при выполнении задач обслуживания или администрирования, хотя я бы серьезно подумал даже об их использовании ...

Материал под/usr/local/lib установлен локально для использования любым пользователем , Системные скрипты и т. Д. Не будут зависеть от них (я сам не знаю SuSE), но скрипты других пользователей вполне могут быть выполнены, поэтому это нужно иметь в виду при внесении изменений здесь. Это общий ресурс. Если ваши сценарии написания, которые могут потребоваться другим пользователям, разработайте против этого, чтобы обеспечить им доступ ко всем необходимым зависимостям.

Вещи в вашем домашнем каталоге - все ваши, так что делайте, как хотите. Используйте это, если вы пишете что-то только для себя, и особенно если вам понадобятся сценарии для переносимости других ящиков/ОС.

Возможно, есть другие варианты, которые имеют смысл, например, если вы являетесь частью команды, разрабатывающей прикладное программное обеспечение, и в этом случае установите базовые dev-пакеты вашей команды в общем месте, но, возможно, не/usr/local.

Что касается использования zypper или pip, я бы предложил использовать zypper для обновления/usr/lib, так как это специальный инструмент для обновления конфигурации ОС. Вероятно, это тоже относится к/usr/local/lib, так как это действительно часть «системы», но это действительно зависит от вас, и какой метод может иметь наибольшее значение, например. если вам нужно реплицировать конфигурацию другого хоста. Для вещей в вашем homedir это зависит от вас, но если вы решите перейти на новый хост в новой ОС, пип по-прежнему будет доступен, и поэтому среда будет легче воссоздать.