Різниця між 'python setup.py install' та 'pip install'


105

У мене є зовнішній пакет, який я хочу встановити у свій 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

Це якщо є якась різниця робити їх цими двома способами.


5
Використовуйте pip. За допомогою нього можна видалити пакети.
Blender

"З джерела", як у "VCS checkout", або як у sdist?

Що "найкраще", залежить від ваших вимог! Ви пробували будь-яке з цих рішень і не справляли їх якимось чином? Або ви питаєте , що різниця є між цими підходами?
Мартін Аткінс,

Наприклад, на Fedora, використовуючи yum.
перреаль

Відповіді:


109

На перший погляд, обидва роблять одне і те ж: виконуючи python setup.py installабо pip install <PACKAGE-NAME>встановлять ваш пакет python за вас, з мінімальною суєтою.

Однак використання 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 пропонує додаткові переваги, які добре інтегруються з використанням 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, дивіться:


1
Чи pip install внутрішньо викликає файл setup.py?
змінна

@variable, pip install з "коліс", попередньо скомпільовані пакети, ні, pip install from source робить: див. pip install build system interface
denis

З мого досвіду 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 встановити

Це може працювати, але не рекомендується. Не потрібно розгортати файл tarball і заходити в нього, щоб запустити файл setup.py.

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

Це спосіб розроблений і кращий. Стисло та узгоджуйте з пакетами у стилі PyPi.

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


Чи можемо ми використовувати pip install -e?
змінна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.