Interested Article - PyPI

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 из :

  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. от 8 октября 2021 на Wayback Machine . Дата обращения: 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