Interested Article - PyPI
- 2021-04-16
- 1
PyPI ( аббр. от англ. Py thon P ackage I ndex — «каталог пакетов Python») — каталог программного обеспечения , написанного на языке программирования Python . В сочетании с системами управления библиотечными пакетами ( pip , easy_install) аналогичен PEAR для PHP и CPAN для Perl . По состоянию на февраль 2020 года содержит более 216 000 пакетов , тогда как в 2010 году пакетов было всего около 10 000 .
История
Модуль 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
из
:
- Предоставляет основу для стандартных полей метаданных пакета
- Содержит набор утилит для сборки пакета и создания архива для распространения или установщика (для 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 .
Примечания
- . pypa.io . Дата обращения: 30 марта 2021. 16 марта 2021 года.
- от 21 мая 2012 на Wayback Machine , 2003-09-24, Jeremy Hylton: weblog
- . Дата обращения: 21 июля 2012. 8 августа 2020 года.
- . Дата обращения: 22 июля 2014. 15 апреля 2018 года.
- . Дата обращения: 22 июля 2014. 9 июня 2017 года.
- . Python Software Foundation (16 апреля 2018). Дата обращения: 1 июня 2018. 23 апреля 2018 года.
- . LWN.net . Дата обращения: 1 июня 2018. 17 мая 2018 года.
- Mark Lutz. . — ISBN 978-1449355739. от 8 октября 2021 на Wayback Machine . Дата обращения: 19 октября 2021. Архивировано 8 октября 2021 года.
- , p. 48.
- , pp. 241—242.
- от 27 мая 2012 на Wayback Machine PEP241
- . Дата обращения: 28 июля 2012. 25 октября 2012 года.
- , pp. 21—23.
- . Дата обращения: 28 июля 2012. Архивировано из 29 января 2014 года.
- . Дата обращения: 28 июля 2012. Архивировано из 24 июля 2014 года.
- . Дата обращения: 28 июля 2012. 21 июня 2017 года.
- . Дата обращения: 28 июля 2012. 2 июня 2017 года.
- .
- 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 .
- 2021-04-16
- 1