Русская Википедия:PyPI
Шаблон:Не путать Шаблон:Сайт PyPI (аббр. от Шаблон:Lang-en — «каталог пакетов Python») — каталог программного обеспечения, написанного на языке программирования Python[1]. В сочетании с системами управления библиотечными пакетами (pip, easy_install) аналогичен PEAR для PHP и CPAN для Perl[2]. По состоянию на февраль 2020 года содержит более 216 000 пакетов[3], тогда как в 2010 году пакетов было всего около 10000[4].
История
Модуль Python Distribution Utilities (distutils) впервые был добавлен в стандартную библиотеку Python в версии 1.6.1 в сентябре 2000 г.,[5] All existing packages were migrated to the new platform and their histories preserved.[6] а в версии 2.0 — в октябре 2000 г., через девять лет после первого выпуска Python (февраль 1991 г.) с целю упростить процесс установки сторонних пакетов в Python.[7]
Регистрация в каталоге
Авторы сами регистрируют в каталоге свои пакеты (первый раз им необходимо предоставить данные и о себе) на PyPIШаблон:Sfn:
python setup.py register
Метаданные обычно хранятся в файле setup.py в составе приготовленного к распространению пакета, а загрузка пакета осуществляется одной командойШаблон:Sfn:
python setup.py sdist—format=zip,gztar upload
Требуемые для регистрации метаданные зафиксированы в PEP241[8] (предложению по развитию Python), принятому в 2001 году. Обязательными являются: версия метаданных, название пакета, версия пакета, платформа (платформы), краткое описание, адрес электронной почты автора, лицензия.
Кроме того, пакет может быть классифицирован с помощью одного или нескольких классификаторов.
Системы управления библиотечными пакетами
Модуль distutils
из стандартной библиотеки Python[9]:
- Предоставляет основу для стандартных полей метаданных пакета
- Содержит набор утилит для сборки пакета и создания архива для распространения или установщика (для Windows)
Возможности distutils
ограничиваются рамками одного пакета, он не имеет возможности определять зависимости.
Система управления пакетами setuptools
, основанная на модуле distutils
, реализует простейшую систему отслеживания зависимостей, занимается загрузкой пакетов и взаимодействием с PyPI. Пакет setuptools
умеет автоматически загружать и устанавливать зависимости пакета.
Утилита easy_install является дополнением к setuptools
, и устанавливает их во время своей установкиШаблон:Sfn.
От проекта setuptools
отделился пакет Distribute, который активно развивается и поддерживает Python 3[10].
Предполагается[11], что в разрабатываемый в настоящее время на основе distutils
и Distribute
пакет distutils2
войдёт в стандартную библиотеку Python. При этом будет сохранена совместимость со старым distutils
[12].
Утилита pip является аналогом easy_install[13].
Пример
Следующий пример заимствован из файла setup.py пакета webpy-celery и представляет собой описание метаданных, относящихся к пакету:
setup(
name='webpy-celery',
version=__version__,
url='http://github.com/faruken/webpy-celery',
license='BSD',
author='Faruk Akgul',
author_email='me@akgul.org',
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
В обоих случаях будут автоматически найдены и установлены все зависимости устанавливаемого пакета.
То же самое можно осуществить и с помощью других утилит, например easy install.
Безопасность
Шаблон:Mainref Каталог PyPI служит источником информации для систем обновления программного обеспечения на Python, что неизбежно ставит вопрос обеспечения информационной безопасности. Система управления библиотеками Python позволяет недоверяющим друг другу (Шаблон:Lang-en) разработчикам делать свои библиотеки доступными пользователям. В настоящее время в PyPI отсутствует механизм защиты обнаружения обновлений (Шаблон:Lang-en) и процесса установки, но существует TUF (Шаблон:Lang-en) — прототип каркаса для безопасной работы с PyPI посредством утилиты easy_install[14].
Примечания
Ссылки
Литература
- ↑ Python Package Index Tutorial Шаблон:Wayback, 2003-09-24, Jeremy Hylton: weblog
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite book Шаблон:Cite web
- ↑ http://www.python.org/dev/peps/pep-0241/ Шаблон:Wayback PEP241
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ https://www.updateframework.com/wiki/SecuringPythonPackageManagement Шаблон:Архивировано Каркас TUF для безопасного обновления