Русская Википедия: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]:

  1. Предоставляет основу для стандартных полей метаданных пакета
  2. Содержит набор утилит для сборки пакета и создания архива для распространения или установщика (для 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