Чи має Python система управління пакетами / модулями?


145

Чи є в Python система управління пакетами / модулями, подібно до того, як у Ruby є рубігеми, де ви можете це зробити gem install packagename?

Під час встановлення модулів Python я бачу лише посилання на них python setup.py install, але для цього потрібно спочатку знайти пакет.


3
Якщо ви вважаєте, що індекс пакунків Python PyPI повинен мати чіткіші інструкції щодо встановлення пакетів, будь ласка, проголосуйте та прокоментуйте цю проблему на bitbucket.org/pypa/pypi/issue/149/…
полковник Паніка

На той час воно було актуальним на той час, тепер у цьому питанні посилання на спадщину документації щодо розподілу даних. Я подав bugs.python.org/issue26014, щоб підтвердити, що ці документи повинні бути зрозумілішими, що вони більше не підходять для використання в якості документації для кінцевих користувачів (вони зберігаються виключно на користь інструментів).
ncoghlan

Відповіді:


213

Нещодавній прогрес

Березень 2014 року : Добрі новини! Python 3.4 поставляється з Pip. Pip вже давно є фактичним менеджером стандартних пакетів Python. Ви можете встановити такий пакет :

pip install httpie

Уей! Це найкраща особливість будь-якого випуску Python. Це робить багатство бібліотек громади доступним для всіх. Новачки більше не виключаються з використання бібліотек спільноти через непомірні труднощі налаштування.

Однак із досвідом упаковки Python залишається чимало видатних розчарувань. Сукупно вони роблять Python дуже небажаним для новачків. Крім того, довга історія занедбаності (тобто не доставка з менеджером пакунків протягом 14 років від Python 2.0 до Python 3.3) завдала шкоди громаді. Я описую обидва нижче.

Видатні розчарування

Важливо розуміти, що, хоча досвідчені користувачі здатні подолати ці фрустрації, вони є істотними бар'єрами для людей, які не знайомі з Python. Насправді, складність та загальна непривітність до користувачів, ймовірно, стримують багато з них.

Веб-сайт PyPI є корисним

Кожна мова з менеджером пакунків має офіційний (або квазіофіційний) сховище для спільноти для завантаження та публікації пакетів. У Python є індекс пакетів Python, PyPI. https://pypi.python.org/pypi

Порівняємо його сторінки з тими, які мають RubyGems і Npm (менеджер пакетів Node).

  1. https://rubygems.org/gems/rails Сторінка RubyGems для пакетаrails
  2. https://www.npmjs.org/package/express Npm-сторінка для пакетаexpress
  3. https://pypi.python.org/pypi/simplejson/ PyPI сторінка для пакетаsimplejson

Ви побачите сторінки RubyGems і Npm, починаючи з однорядного опису пакета, а потім великі дружні інструкції, як його встановити.

Тим часом, горе будь-якому нещасному користувачеві Python, який наївно переглядає PyPI. На https://pypi.python.org/pypi/simplejson/ вони не знайдуть таких корисних інструкцій. Однак є велике зелене посилання "Завантажити". Дотримуватися цього нерозумно. Ага, вони клацають! Їх браузер завантажує .tar.gzфайл. Багато користувачів Windows навіть не можуть його відкрити, але якщо вони наполягають, вони можуть згодом витягнути його, а потім запустити setup.pyі врешті за допомогою Google setup.py install. Деякі відмовляться і винаходять колесо.

Звичайно, все це неправильно. Самий простий спосіб встановити пакет за допомогою команди , Піп. Але PyPI навіть не згадував Піпа. Натомість це призвело їх до архаїчного та нудного шляху.

Помилка: неможливо знайти vcvarsall.bat

Numpy - одна з найпопулярніших бібліотек Python. Спробуйте встановити його за допомогою Pip, ви отримаєте це загадкове повідомлення про помилку:

Помилка: неможливо знайти vcvarsall.bat

Намагаючись виправити, що є одним із найпопулярніших питань щодо переповнення стека: " помилка: неможливо знайти vcvarsall.bat "

Мало хто домагається успіху.

Для порівняння, у тій же ситуації Рубі друкує це повідомлення, в якому пояснюється, що відбувається і як це виправити:

Оновіть свій PATH, щоб включити інструменти збирання або завантажити DevKit з http://rubyinstaller.org/downloads та дотримуйтесь інструкцій на веб- сторінці http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Опублікувати пакети важко

Ruby і Nodejs постачаються з повнофункціональними менеджерами пакетів, Gem (з 2007 року) і Npm (з 2011 року), і підтримували спільні спільноти, що зосереджуються навколо GitHub. Npm робить публікацію пакетів настільки ж простим, як і їх установка, вона вже має 64-тисячні пакети . RubyGems перелічує 72 к пакетів . Індекс поважних пакетів Python містить лише 41k .

Історія

Літаючи перед девізом " включені батареї ", Python постачався без менеджера пакунків до 2014 року.

До Піпа фактичним стандартом була команда easy_install. Це було жахливо неадекватно. Не було команди видаляти пакунки.

Піп був масовим поліпшенням. Він мав більшість рис дорогоцінного каміння Рубі. На жаль, Піп був - донедавна - іронічно складним у встановленні. Насправді проблема залишається головним питанням Python у стеці Overflow: " Як встановити pip для Windows? "


3
Для всіх, хто цікавиться, PEP 439 пропонує спосіб впорядкувати процес встановлення протоколу, хоча я думаю, що цей PEP є лише частиною більш широкої стратегії, яка розглядається. Дивіться також дискусію тут .
Картру

3
@Cartroo, це чудова новина! Python заслуговує менеджера пакунків, сподіваюся, що розробники зможуть це зробити.
Полковник Паніка

Абсолютно, давно прострочена. Я, безумовно, сподіваюся, що він перетворить його на Python 3.4. На жаль, я дуже сумніваюся, що це в кінцевому підсумку буде перенесено на 2.x, але в кінці тунелю є принаймні світло. Будемо сподіватися, що це не зустрічається дракон ... (^_^)
Cartroo

6
На захист Python, новітні мови, такі як Ruby та Node, пощастило спостерігати за помилками попередніх мов та уникати їх. З цього приводу я дуже хочу, щоб управління пакетами на Python отримало більше любові та турботи, тому я рада бачити PEP 439, як вказував @Cartroo.
Денніс

Я погоджуюсь, що управління пакунками Ruby - це чудова річ з мого (кінцевого користувача) точки зору .. gem install Xпросто, здається, працює на всіх платформах. То як їм вдалося це зробити для дорогоцінних каменів, для яких потрібна компіляція коду С у Windows?
бса

64

Індекс пакетів Python (PyPI) здається стандартним:

  • Щоб встановити пакет: pip install MyProject
  • Щоб оновити пакет pip install --upgrade MyProject
  • Щоб виправити версію пакетаpip install MyProject==1.0

Ви можете встановити менеджер пакунків таким чином:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

Список літератури:


3
Це сучасна відповідь.
Gringo Suave

6
Я шукав в Інтернеті 20 хвилин, і цієї відповіді було ніде. Дуже дякую. Крім того, у мене є серйозні сумніви щодо використання python, якщо документація така погана ... це повинно бути на головній сторінці Python або доступне в Google або щось подібне
Chris J

63

А щоб забезпечити контраст, є також піп .


2
Дякую! Чому pip не згадується на сторінці встановлення документації модулів python?
tommy chheng

Зверніть увагу, що pip не підтримує яйця, він встановлює лише вихідні пакети. Взагалі кажучи, pip робить багато речей набагато краще, ніж easy_install, але easy_install, швидше за все, буде встановлений за замовчуванням на більшості Unixes, pip - ні.
Джеффрі Харріс

8
@Tommy Правильно! Якщо розробники Python піклуються про досвід користувачів, вони відправлять Python разом із менеджером пакунків (наприклад, pip). Ruby поставляється з Gem, а Nodejs - з Npm. stackoverflow.com/a/13445719/284795
Полковник Паніка

21

Як розробник Ruby і Perl та навчальний Python, я не знайшов easy_install або pip бути еквівалентом RubyGems або CPAN.

Я схильний тримати свої системи розробки за допомогою останніх версій модулів, коли розробники оновлюють їх, і заморожують мої виробничі системи на встановлених версіях. І RubyGems, і CPAN полегшують пошук модулів, перелічуючи доступні дані, а потім встановлюйте та пізніше оновлюйте їх окремо або при бажанні оптом.

easy_install та pip полегшують установку модуля, ЯКЩО я знаходив його через пошук у браузері або дізнався про нього якимись іншими способами, але вони не скажуть мені, що є в наявності. Я можу чітко назвати модуль, який потрібно оновити, але додатки не скажуть мені, що було оновлено, і вони не будуть оновити все оптом, якщо я хочу.

Отже, основна функціональність є в pip та easy_install, але відсутні функції, які я хотів би побачити, що зробить їх дружнішими та простішими у використанні та нарівні з CPAN та RubyGems.


Ця відповідь зараз добре і справді застаріла.
ncoghlan


11

Принаймні наприкінці 2014 року слід врахувати дистрибуцію Anaconda Python з Continuum Analytics з диспетчером пакетів conda . Він вирішує більшість серйозних проблем, з якими люди стикаються з Python загалом (керування різними версіями Python, оновлення версій Python, управління пакетами, віртуальне середовище, сумісність Windows / Mac) за один згуртований завантаження.

Це дозволяє вам робити майже все, що ви могли захотіти з Python, не змінюючи систему взагалі. Наступним моїм кращим рішенням є pip + virtualenv, але вам або доведеться встановити virtualenv у вашу систему Python (і ваша система Python може бути не потрібною вами версією), або побудувати з джерела . Anaconda робить весь цей процес натисканням кнопки, а також додаванням ще багатьох функцій.


7

Це було б легко_встановити .


1
Якщо ви хочете взяти участь у програмі всіх членів сторінки easy_install, спочатку перевірте дати. Це була дійсна порада, коли вона була дана майже 7 років тому . Я не думаю, що з нас, хто відповідає, ми не збираємось регулярно переглядати це оновлення, тож заборона на дурне нерозумна.
Кірк Штраузер


5

Я не бачу ні MacPorts, ні Homebrew, які згадуються в інших відповідях тут, але оскільки я бачу, як вони згадуються в іншому місці на переповнюванні стека для пов’язаних питань, я додаю свій власний 0,02 долар США, що багато людей, здається, вважають MacPorts не лише пакетом. менеджер пакетів загалом (станом на сьогодні вони перелічують 16311 пакунків / портів, 2931 відповідність "python", хоча і лише для Macs), а також як гідний (можливо, кращий) менеджер пакунків для пакетів / модулів Python:

Питання

"... що таке метод, який розробники Mac python використовують для управління своїми модулями?"

Відповіді

SciPy

"Маки (на відміну від Linux) не постачаються з менеджером пакунків, але є кілька популярних менеджерів пакунків, які ви можете встановити. Макпорти ..."

Я все ще обговорюю питання щодо того, використовувати сам MacPorts чи ні, але на даний момент я схиляюся в цьому напрямку.


1
Сам Homebrew каже: Ви можете встановити пакети Python за допомогою (застарілого easy_install або) pip install <your_favorite_package>
Simone

4

У Windows встановіть http://chocolatey.org/ потім

choco install python

Відкрийте нове cmd-вікно з оновленим PATH. Далі, зробіть

choco install pip

Після цього можна

pip install pyside
pip install ipython
...

Я хотів відповісти на це як коментар до відповіді Томаса Братта, але мені не вистачає репутації ...
hansvb

3

Оскільки тут ніхто не згадав pipenv , я хотів би описати свої погляди, чому всі повинні використовувати його для управління пакетами python.

Як зазначав @ColonelPanic, існує кілька проблем з індексом пакету Python, а також з pip та virtualenv .

Pipenv вирішує більшість питань з pip та також надає додаткові можливості.

Особливості Піпенва

Pipenv призначений замінити pip та virtualenv, а значить, pipenv автоматично створить окреме віртуальне середовище для кожного проекту, таким чином уникнувши конфліктів між різними версіями python / версіями пакетів для різних проектів.

  • Вмикає справді детерміновані побудови, при цьому легко вказуючи лише те, що потрібно.
  • Створює та перевіряє хеші файлів на наявність заблокованих залежностей.
  • Автоматично встановлюйте потрібні пітони, якщо pyenv доступний.
  • Автоматично знаходить ваш проект додому, рекурсивно, шукаючи Pipfile.
  • Автоматично генерує файл Pipfile, якщо такого не існує.
  • Автоматично створює virtualenv у стандартному місці.
  • Автоматично додає / видаляє пакети до Pipfile, коли вони не встановлені / встановлені.
  • Автоматично завантажує .env файли, якщо вони існують.

Якщо ви раніше працювали над проектами python, ви розумієте, що ці функції спрощують управління пакетами.

Інші команди

  • checkперевіряє наявність вразливості безпеки та стверджує, що вимогам PEP 508 відповідає поточне середовище. ( що, на мою думку, є чудовою особливістю особливо після цього - шкідливі пакети на PyPi )
  • graph покаже графік залежності встановлених залежностей.

Більше про це можна прочитати тут - Pipenv .

Установка

Ви можете знайти документацію по установці тут

PS: Якщо вам сподобалось працювати з запитами на пакет Python , ви будете раді дізнатись, що pipenv - це той самий розробник Кеннет Рейц



0

Поезія - це те, що ви шукаєте. Він піклується про управління залежностями, віртуальними середовищами, бігом.

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