Разница между python setup.py install и pip install

109

У меня есть внешний пакет, который я хочу установить в свой python virtualenv из файла tar. Как лучше всего установить пакет?

Я обнаружил 2 способа сделать это:

  1. Извлеките tar-файл, затем запустите python setup.py installего в извлеченном каталоге.
  2. pip install packagename.tar.gzиз примера № 7 в https://pip.pypa.io/en/stable/reference/pip_install/#examples

Есть ли разница, выполняя их этими двумя способами.

user2125465
источник
5
Используйте pip. С его помощью вы можете удалять пакеты.
Blender
«Из источника», как в «VCS checkout», или как в sdist?
Что лучше, зависит от ваших требований! Вы пробовали какое-либо из этих решений, но каким-то образом не смогли их реализовать? Или вы спрашиваете , что разница есть между этими подходами?
Мартин Аткинс
Например, в Fedora с использованием yum.
perreal

Ответы:

112

На поверхности, как сделать то же самое: делать либо python setup.py installили pip install <PACKAGE-NAME>установит пакет питона для вас, с минимальным количеством суеты.

Однако использование pip дает некоторые дополнительные преимущества, которые делают его намного удобнее.

  • pip автоматически загрузит для вас все зависимости для пакета. Напротив, если вы используете setup.py, вам часто приходится вручную искать и загружать зависимости, что утомительно и может раздражать.
  • pip отслеживает различные метаданные, что позволяет легко удалять и обновлять пакеты с помощью одной команды: pip uninstall <PACKAGE-NAME>и pip install --upgrade <PACKAGE-NAME>. Напротив, если вы устанавливаете пакет с помощью setup.py, вам придется вручную удалить и поддерживать пакет вручную, если вы хотите избавиться от него, что может быть потенциально подвержено ошибкам.
  • Вам больше не нужно загружать файлы вручную. Если вы используете setup.py, вам нужно посетить веб-сайт библиотеки, выяснить, где его загрузить, извлечь файл, запустить setup.py... Напротив, pip будет автоматически искать в индексе пакетов Python (PyPi), чтобы узнать, существует ли там пакет, и автоматически загрузит, распакует и установит пакет. За некоторыми исключениями, почти все действительно полезные библиотеки Python можно найти на PyPi.
  • pip позволит вам легко установить колеса, что является новым стандартом распространения Python. Подробнее о колесах .
  • pip предлагает дополнительные преимущества, которые хорошо интегрируются с using virtualenv- программой, которая позволяет запускать несколько проектов, требующих конфликтующих библиотек и версий Python на вашем компьютере. Больше информации .
  • pip по умолчанию связан с Python, начиная с Python 2.7.9 в серии Python 2.x и с Python 3.4.0 в серии Python 3.x, что делает его еще проще в использовании.

Итак, в основном используйте pip. Он предлагает только улучшения по сравнению с использованием python setup.py install.


Если вы используете старую версию Python, не можете выполнить обновление и у вас не установлен pip, вы можете найти дополнительную информацию об установке pip по следующим ссылкам:

pip сам по себе не требует обучения. В 90% случаев единственная команда, которая вам действительно нужна, - это pip install <PACKAGE-NAME>. Тем не менее, если вам интересно узнать больше о том, что именно вы можете делать с помощью pip, см.

Также обычно рекомендуется использовать pip и virtualenv вместе. Если вы новичок в Python, я лично думаю, что было бы неплохо начать с простого использования pip и установки пакетов по всему миру, но в конечном итоге я действительно думаю, что вам следует перейти на использование virtualenv, когда вы беретесь за более серьезные проекты.

Если вы хотите узнать больше об использовании pip и virtualenv вместе, см.

Майкл0x2a
источник
1
Вызывает ли pip install внутренне файл setup.py?
переменная
@variable, установка pip с "колес", предварительно скомпилированные пакеты, нет, установка pip из источника выполняет: см. интерфейс системы сборки pip install
Денис
По моему опыту, python setup.py installтакже скачивает и устанавливает зависимости. Это изменение с тех пор, как вы написали этот ответ в 2013 году?
Кен Уильямс,
19

python setup.py installявляется аналогом make install: это ограниченный способ компиляции и копирования файлов в целевые каталоги. Это не значит, что это лучший способ действительно установить программное обеспечение в вашей системе.

pip- это менеджер пакетов, который может устанавливать, обновлять, перечислять и удалять пакеты, например знакомые менеджеры пакетов, в том числе: dpkg, apt, yum, urpmi, portsи т. д. Под капотом он будет работать python setup.py install, но с определенными параметрами для управления тем, как и где в конечном итоге будут установлены вещи.

В итоге: используйте pip.

Эрик Араужо
источник
2

Вопрос заключается в предпочтительном методе установки локального tarball, содержащего пакет python, а НЕ о преимуществах загрузки пакета в службу индексации, такую ​​как PyPi.

Поскольку я не знаю, что какой-то дистрибьютор программного обеспечения не загружает свой пакет в PyPi, вместо этого прося разработчиков загрузить пакет со своего веб-сайта и установить.

установка python setup.py

Это может сработать, но не рекомендуется. Нет необходимости разворачивать архивный файл и заходить в него для запуска файла setup.py.

pip install ../path/to/packagename.tar.gz

Этот способ разработан и предпочтителен. Кратко и согласовано с пакетами в стиле PyPi.

Более подробную информацию pip installможно найти здесь: https://pip.readthedocs.io/en/stable/reference/pip_install/

тематическое поле
источник
Можем ли мы использовать pip install -e?
переменная