Мягкое введение в мир упаковки Python и написание вашего первого пакета Python.

Несколько лет назад, когда я набрал pip install opencv-python, прошло несколько секунд, и произошло нечто волшебное - я смог использовать OpenCV; не нужно было собирать его из исходников, не нужен компилятор, это определенно было захватывающе. Я мог установить любой пакет, который хотел, и не беспокоиться о его сборке / установке или настройке системной переменной.

На протяжении многих лет я продолжал использовать pip, и каждый раз это меня восхищало. Это действительно заставило меня задуматься о том, насколько простой может быть технология. Как пользователь Windows, каждый раз, когда я устанавливал что-то новое, мне приходилось настраивать системный путь. Так что это определенно сделало мою жизнь проще.

Несколько месяцев назад я решил написать свой собственный пакет Python. Мне всегда казалось, что Graphs интересен, и я решил написать полноценную библиотеку графов, и я начал писать Grapho (это работа в стадии разработки).

Файлы в одном модуле всегда могут быть импортированы всеми файлами в каталоге. Но что, если вы хотите, чтобы ваш модуль был доступен во всей системе?

Вы добавляете файл setup.py в свой модуль (конечно, с соответствующей конфигурацией).

Но что, если вы хотите, чтобы пакет Python был доступен всем во всем мире?

Вы публикуете свой пакет на PyPI. (так что каждый может pip install your-package-name)

Хватит разговоров, давайте напишем код. Напишем простую функцию и упакуем ее.

# hello.py

def heythere():
  print("hey there")

# setup.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(
  author="Chinmay Shah",
  author_email='[email protected]',
  classifiers=[
    'License :: OSI Approved :: MIT License',
    'Programming Language :: Python :: 3.7',
  ],
  description="Says hello",
  license="MIT license",
  include_package_data=True,
  name='hello',
  version='0.1.0',
  zip_safe=False,
)

Setup.py - это то, что pip ищет в заданном каталоге. Он использует так называемые setuptools [1], которые позволяют создавать пакеты. Он содержит имя вашего пакета, краткое описание вашего пакета, а также информацию об авторе. И не забудьте указать, для какой версии Python он создан. Все эти метаданные важны.

Выглядит просто? Тогда давай попробуем это. Давай установим - pip install .

Но что это значит, когда я говорю, что он его устанавливает?

  1. Во-первых, он создает файл колеса (.whl); который является допустимым файлом для распространения пакета.
  2. В процессе установки он использует этот файл колеса и устанавливает его в site-package directory (Anaconda использует его).
  3. В случае загрузки из Интернета локальный кеш часто создается в папке pkgs.

Но что такое pip?

pip - это установщик пакетов для Python, используемый для установки пакетов (в основном) из PyPI (Python Package Index). Запущен в 2008 году как обновление до easyinstall, хотя оба они построены на основе setuptools. [1]

PyPI - это обширный указатель пакетов, в который каждый может отправить свой пакет, и любой может сделать это в любой точке земного шара pip install your-package-name.

Следите за следующей публикацией, в которой я расскажу о том, как написать пакет, а также о том, как опубликовать его на PyPI.

Есть какие мысли? Напишите нам в Twitter, Linkedin или E-Mail.

Ссылка:

[1] Инструменты настройки - https://setuptools.readthedocs.io/en/latest/