Interested Article - PyPI

PyPI ( аббр. от англ. Py thon P ackage I ndex — «каталог пакетов Python») — каталог программного обеспечения , написанного на языке программирования Python . В сочетании с системами управления библиотечными пакетами ( pip , easy_install) аналогичен PEAR для PHP и CPAN для Perl . По состоянию на февраль 2020 года содержит более 216 000 пакетов , тогда как в 2010 году пакетов было всего около 10000 .

История

Модуль Python Distribution Utilities (distutils) впервые был добавлен в стандартную библиотеку Python в версии 1.6.1 в сентябре 2000 г., All existing packages were migrated to the new platform and their histories preserved. а в версии 2.0 — в октябре 2000 г., через девять лет после первого выпуска Python (февраль 1991 г.) с целю упростить процесс установки сторонних пакетов в Python.

Регистрация в каталоге

Авторы сами регистрируют в каталоге свои пакеты (первый раз им необходимо предоставить данные и о себе) на PyPI :

python setup.py register 

Метаданные обычно хранятся в файле setup.py в составе приготовленного к распространению пакета, а загрузка пакета осуществляется одной командой :

python setup.py sdist—format=zip,gztar upload 

Требуемые для регистрации метаданные зафиксированы в PEP241 (предложению по развитию Python), принятому в 2001 году. Обязательными являются: версия метаданных, название пакета, версия пакета, платформа (платформы), краткое описание, адрес электронной почты автора, лицензия.

Кроме того, пакет может быть классифицирован с помощью одного или нескольких классификаторов .

Системы управления библиотечными пакетами

Модуль distutils из :

  1. Предоставляет основу для стандартных полей метаданных пакета
  2. Содержит набор утилит для сборки пакета и создания архива для распространения или установщика (для Windows )

Возможности distutils ограничиваются рамками одного пакета, он не имеет возможности определять зависимости.

Система управления пакетами setuptools , основанная на модуле distutils , реализует простейшую систему отслеживания зависимостей, занимается загрузкой пакетов и взаимодействием с PyPI. Пакет setuptools умеет автоматически загружать и устанавливать зависимости пакета.

Утилита easy_install является дополнением к setuptools , и устанавливает их во время своей установки .

От проекта setuptools отделился пакет Distribute, который активно развивается и поддерживает Python 3 .

Предполагается , что в разрабатываемый в настоящее время на основе distutils и Distribute пакет distutils2 войдёт в стандартную библиотеку Python. При этом будет сохранена совместимость со старым distutils .

Утилита pip является аналогом easy_install .

Пример

Следующий пример заимствован из файла setup.py пакета webpy-celery и представляет собой описание метаданных, относящихся к пакету:

setup(name='webpy-celery', version=__version__, url='http://github.com/faruken/webpy-celery', license='BSD', author='Faruk Akgul', author_email='[email protected]', description='Celery wrapper for web.py framework', long_description=__doc__, zip_safe=False, packages=find_packages(exclude=['examples', 'tests']), platforms='any', install_requires=[ 'web.py>=0.34', 'celery>=2.3.0', ], classifiers=[ 'Environment:: Web Environment', 'Intended Audience:: Developers', 'License:: OSI Approved:: BSD License', 'Operating System:: OS Independent', 'Programming Language:: Python', 'Programming Language:: Python:: 2.5', 'Programming Language:: Python:: 2.6', 'Programming Language:: Python:: 2.7', 'Topic:: Internet:: WWW/HTTP:: Dynamic Content', 'Topic:: Software Development:: Libraries:: Python Modules', ],) 

Использование каталога

Как указано на сайте PyPI, воспользоваться каталогом можно с помощью команды pip (при условии, что она предварительно установлена):

pip install название_пакета 

Или же просто найти, загрузить, разархивировать, а затем запуском файла setup.py установить требуемый пакет:

python setup.py install 

В обоих случаях будут автоматически найдены и установлены все зависимости устанавливаемого пакета.

То же самое можно осуществить и с помощью других утилит, например .

Безопасность

Каталог PyPI служит источником информации для систем обновления программного обеспечения на Python, что неизбежно ставит вопрос обеспечения информационной безопасности. Система управления библиотеками Python позволяет недоверяющим друг другу ( англ. mutually distrustful) разработчикам делать свои библиотеки доступными пользователям. В настоящее время в PyPI отсутствует механизм защиты обнаружения обновлений ( англ. update discovery) и процесса установки, но существует TUF ( англ. The Update Framework) — прототип каркаса для безопасной работы с PyPI посредством утилиты easy_install .

Примечания

  1. (неопр.) . pypa.io . Дата обращения: 30 марта 2021. 16 марта 2021 года.
  2. от 21 мая 2012 на Wayback Machine , 2003-09-24, Jeremy Hylton: weblog
  3. (неопр.) . Дата обращения: 21 июля 2012. 8 августа 2020 года.
  4. (неопр.) . Дата обращения: 22 июля 2014. 15 апреля 2018 года.
  5. (неопр.) . Дата обращения: 22 июля 2014. 9 июня 2017 года.
  6. (неопр.) . Python Software Foundation (16 апреля 2018). Дата обращения: 1 июня 2018. 23 апреля 2018 года.
  7. (неопр.) . LWN.net . Дата обращения: 1 июня 2018. 17 мая 2018 года.
  8. Mark Lutz. . — ISBN ‎ 978-1449355739. (неопр.) . Дата обращения: 19 октября 2021. Архивировано 8 октября 2021 года.
  9. , p. 48.
  10. , pp. 241—242.
  11. от 27 мая 2012 на Wayback Machine PEP241
  12. (неопр.) . Дата обращения: 28 июля 2012. 25 октября 2012 года.
  13. , pp. 21—23.
  14. (неопр.) . Дата обращения: 28 июля 2012. Архивировано из 29 января 2014 года.
  15. (неопр.) . Дата обращения: 28 июля 2012. Архивировано из 24 июля 2014 года.
  16. (неопр.) . Дата обращения: 28 июля 2012. 21 июня 2017 года.
  17. (неопр.) . Дата обращения: 28 июля 2012. 2 июня 2017 года.
  18. .
  19. 17 декабря 2012 года. Каркас TUF для безопасного обновления

Ссылки

Литература

  • Paul Barry. . — O'Reilly Media, 2010. — 494 с. — ISBN 978-1-4493-8267-4 .
  • Marty Alchin. Pro Python. — Apress, 2010. — 368 с. — ISBN 978-1-4302-2757-1 .
  • Justin Samuel, Nick Mathewson, Justin Cappos, and Roger Dingledine. (англ.) // Proceedings of the XVII ACM conference on Computer and communications security. — N.Y, 2010. — P. 61—72 . — ISBN 978-1-4503-0245-6 . — doi : .
  • Tarek Ziadé. Expert Python Programming. — Packt Publishing, 2008. — 372 с. — ISBN 9781847194947 .

Same as PyPI