склонный - получают установку по сравнению с установкой зернышка

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

sudo pip install python-pyudev

но полученный следующее сообщение:

Downloading/unpacking python-pyudev

  Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log

Однако следующее хорошо работало:

sudo apt-get install python-pyudev

Когда apt-get предполагаемый использоваться для установки пакетов и когда python-pip б/У?

121
задан 13 April 2017 в 05:24

4 ответа

PyPI - это индекс пакетов Python - репозиторий модулей Python.

pip используется для загрузки и установки пакетов непосредственно из PyPI. PyPI размещен на Python Software Foundation . Это специализированный менеджер пакетов, который работает только с пакетами python.

apt-get используется для загрузки и установки пакетов из репозиториев Ubuntu, размещенных на Canonical.

Некоторые различия между установкой пакетов python из apt-get и pip следующие:

  • Canonical предоставляет пакеты только для выбранных модулей Python. В то время как PyPI содержит гораздо более широкий спектр модулей Python. Итак, существует множество модулей python, которые вы не сможете установить с помощью apt-get .

  • Canonical размещает только одну версию любого пакета (обычно последнюю или выпущенную в недавнее прошлое). Итак, с apt-get мы не можем решить, какую версию python-package мы хотим. pip помогает нам в этой ситуации. Мы можем установить любую версию пакета, которая была ранее загружена на PyPI.Это чрезвычайно полезно в случае конфликта в зависимостях.

  • apt-get устанавливает модули python в общесистемном месте. Мы не можем просто установить модули в наш проект virtualenv . pip решает эту проблему за нас. Если мы используем pip после активации virtualenv, он достаточно умен, чтобы устанавливать модули только в нашем проекте virtualenv. Как упоминалось в предыдущем пункте, если версия определенного пакета python уже установлена ​​в общесистемном расположении, и одному из наших проектов требуется более старая версия того же пакета python, в таких ситуациях мы можем использовать virtualenv и pip для установки эта старая версия пакета python без каких-либо конфликтов.

  • Как @Radu Rădeanu указал в этом ответе , как правило, также будет разница в именах пакетов. Canonical обычно называет пакеты Python 2 как python- <имя_пакета> , а пакеты Python 3 как python3- <имя_пакета> . В то время как для pip нам обычно просто нужно использовать как для Python 2, так и для пакетов Python 3.

Какой из них вы должны использовать:

Оба apt-get и pip - это зрелые менеджеры пакетов, которые автоматически устанавливают любые другие зависимости пакета во время установки. Вы можете использовать кого угодно, как хотите. Однако, если вам нужно установить определенную версию python-package, или установить пакет в virtualenv, или установить пакет, который размещен только на PyPI; только pip поможет вам решить эту проблему. В противном случае, если вы не возражаете против установки пакетов в общесистемном месте, на самом деле не имеет значения, используете ли вы apt-get или pip .

112
ответ дан 22 November 2019 в 23:01

Я предпочитаю всегда использовать apt и только в том случае, если модуль еще не доступен в репозитории Debian / Ubuntu для использования pip , но только в контексте пользователя - - флаг пользователя . Используя pip , все равно придется установить все зависимости сборки из, скажем, репозитория Ubuntu, или предоставить их сами, что может быть утомительной задачей. apt-get устанавливает двоичные пакеты, а pip собирает их после загрузки. Не следует использовать pip для установки модулей в системные папки. Это совершенно неправильно. Всегда используйте -пользовательский флаг для установки модуля в домашнее местоположение. Правильно настроенный PYTHONPATH позволяет python сначала забирать модули из HOME, а затем системные модули, установленные с помощью apt-get .

3
ответ дан 22 November 2019 в 23:01

Как сказал @AvinashRaj в его комментарии , pip используется только для установки пакетов python, но apt-get является используется для установки пакетов, созданных на любом языке программирования.

Ваша основная проблема заключается в том, чтобы найти правильное имя пакета в обоих случаях:

pip search pyudev

даст вам правильное имя для пакета, который вы хотите установить, используя pip install , так как

apt-cache search pyudev

даст вам правильное имя для пакета, который вы хотите установить, используя apt-get install :

radu@Radu: ~ $ pip search pyudev
pyudev                    - A libudev binding
radu@Radu: ~ $ apt-cache search pyudev
python-pyudev - Python bindings for libudev
python3-pyudev - Python3 bindings for libudev

Итак, в замешательстве, корреспондент sudo apt-get установить python-pyudev это sudo pip install pyudev , а не sudo pip install python-pyudev .

Теперь зависит от вас, что вы хотите выбрать, когда хотите установить пакет python: pip или apt-get . См., Например, этот Q&A о различиях в установке пакета с использованием pip и apt-get .

21
ответ дан 22 November 2019 в 23:01

Это совет, данный по широко связанной проблеме на сайте pip GitHub по теме система установлена ​​pip vs local installed pip :

  1. Используйте системный менеджер пакетов только для обновления системного pip . Установленный системой pip принадлежит дистрибутиву, и если вы не используете инструменты, поставляемые с дистрибутивом, чтобы управлять им, вы попадете проблемы. Да, мы знаем, что pip говорит: «Вам следует выполнить обновление с помощью pip install. -U pip "- это верно для установки, управляемой pip, в идеале дистрибутивы должны исправить это сообщение, чтобы инструкции в системном пункте, но они этого не делают. Мы работаем с их об этом, но это произойдет не скоро (помните, мы глядя на случаи, когда люди обновляют старые версии pip здесь, поэтому исправления для новых версий не помогут).

  2. Никогда не используйте sudo с pip . Это следует из первого пункта. Если вы думаете, что вам нужно использовать sudo, вы, вероятно, пытаетесь изменить файл, принадлежащий дистрибутиву. См. Пункт 1.

  3. Предпочитайте использовать --user . Делая это, вы всегда устанавливаете пакеты только в свои личные каталоги, и поэтому вы избегаете вмешательства с системной копией pip. Но есть проблемы с PATH, которые вам нужно известно здесь. Мы рассмотрим это позже. Проще говоря, можно следуйте этому совету и все равно сталкиваетесь с проблемами, потому что вы не на самом деле запускает оболочку, которую вы установили как --user.

1
ответ дан 5 January 2021 в 23:11

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

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