Я немного запутался в тех случаях, когда вышеуказанные команды должны использоваться при загрузке пакетов 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
?
apt
software-installation
python
pip
Винеет Каушик
источник
источник
pip
используется только для установки пакетов Python, ноapt-get
используется для установки всех пакетов.Ответы:
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-пакета, который нам нужен.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
.источник
pip
иapt-get
одновременно.apt-get
. Поскольку использование обоихapt-get
иpip
может привести к конфликтам, должен ли совет всегда использоватьpip
пакеты, поддерживаемыеpip
?sudo pip
без,virtualenv
потому что большинству ваших проектов требовалась одна и та же среда (но более обширная, чем та, которая предоставляется при чистой установке Ubuntu). Затем , когда вы делаете обновление системы и Ubuntu решает обновить Python до новой версии (например , сzesty
кartful
- Python 3.5 до 3.6), все ваших семечковых установленных пакетов в/usr
оставлены позади иpip.get_installed_distributions()
производит пустой список.Как сказал @AvinashRaj в своем комментарии ,
pip
он используется только для установки пакетов python, ноapt-get
используется для установки пакетов, созданных на любом языке программирования.Ваша основная проблема - найти правильное имя пакета в обоих случаях:
даст вам правильное имя для пакета, который вы хотите установить, используя
pip install
, какдаст вам правильное имя для пакета, который вы хотите установить, используя
apt-get install
:Итак, в заключение, корреспондент
sudo apt-get install python-pyudev
естьsudo pip install pyudev
, а неsudo pip install python-pyudev
.Теперь от вас зависит, что вы хотите выбрать, когда хотите установить пакет Python:
pip
илиapt-get
. Посмотрите, например, эти вопросы и ответы о разнице в установке пакета с использованиемpip
иapt-get
.источник
Мой предпочтительный способ - всегда использовать,
apt
и только в том случае, если модуль еще не доступен для использования в репозитории Debian / Ubuntupip
, но только в пользовательском контексте ---user
flag. Вpip
любом случае, используя его, нужно получить все установленные зависимости, скажем, из хранилища Ubuntu, или предоставить их самим, что может быть утомительной задачей.apt-get
устанавливать бинарные пакеты, покаpip
собирает их после загрузки. Не следует использовать pip для установки модулей в системных местах. Это совершенно неправильно. Всегда используйте--user
флаг, чтобы установить модуль в домашнее местоположение. Правильно настроенный PYTHONPATH позволяет python сначала забрать модули из HOME, а затем системные модули, установленные сapt-get
.источник