Создание пакета

Разработка пакетов на Python

James Fulton

Climate informatics researcher

Зачем создавать пакет?

  • Чтобы упростить повторное использование кода
  • Чтобы избежать многократного копирования
  • Чтобы поддерживать функции в актуальном состоянии
  • Чтобы делиться кодом с другими
Разработка пакетов на Python

Содержание курса

Вы создадите полноценный пакет и изучите:

  • Структуру файлов
  • Организацию импорта
  • Установку пакета
  • Добавление лицензий и README
  • Стиль кода и модульное тестирование
  • Регистрацию и публикацию пакета на PyPI
  • Использование шаблонов пакетов
Разработка пакетов на Python

Скрипты, модули и пакеты

  • Скрипт — файл Python, запускаемый как python myscript.py

  • Пакет — директория с кодом Python, предназначенная для импорта

    • например, numpy
  • Подпакет — пакет внутри другого пакета

    • например, numpy.random и numpy.linalg
  • Модуль — файл Python внутри пакета, содержащий его код

    • пример будет на следующих 2 слайдах
  • Библиотека — отдельный пакет или коллекция пакетов

    • например, стандартная библиотека Python (math, os, datetime,...)
Разработка пакетов на Python

Дерево каталогов пакета

Дерево каталогов простого пакета

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • Эта директория mysimplepackage является пакетом Python
  • simplemodule.py содержит весь код пакета
  • __init__.py помечает директорию как пакет Python
Разработка пакетов на Python

Содержимое простого пакета

__init__.py

Пустой файл

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

Файл с обобщёнными функциями и кодом.

Разработка пакетов на Python

Подпакеты

Дерево каталогов пакета с подпакетами

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Разработка пакетов на Python

Давайте потренируемся!

Разработка пакетов на Python

Preparing Video For Download...