apt-get install vs pip install

74

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

задан Vineet Kaushik 09.03.2014 в 16:51
источник

2 ответа

74

PyPI - это индекс Python Package - репозиторий модулей 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, который мы хотим. pip помогает нам в этой ситуации. Мы можем установить любую версию пакета, который ранее был загружен в PyPI. Это чрезвычайно полезно в случае конфликта в зависимостях.

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

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

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

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

    
ответ дан Aditya 09.03.2014 в 17:53
источник
19

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

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

pip search pyudev

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

apt-cache search pyudev

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

[email protected]: ~ $ pip search pyudev
pyudev                    - A libudev binding
[email protected]: ~ $ apt-cache search pyudev
python-pyudev - Python bindings for libudev
python3-pyudev - Python3 bindings for libudev

Итак, в заключении, корреспондент sudo apt-get install python-pyudev равен sudo pip install pyudev , а не sudo pip install python-pyudev .

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

    
ответ дан Radu Rădeanu 09.03.2014 в 17:13