Встановлення власного пакета

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

James Fulton

Climate informatics researcher

Навіщо встановлювати власний пакет?

У файлі example_script.py

import mysklearn

Дерево теки для пакета з підпакетами

home/
|-- mysklearn            <-- у тій самій теці
|  |-- __init__.py
|  |-- preprocessing
|  |   |-- __init__.py
|  |   |-- normalize.py
|  |   |-- standardize.py
|  |-- regression
|  |   |-- __init__.py
|  |   |-- regression.py
|  `-- utils.py
|-- example_script.py    <-- у тій самій теці
Розроблення пакетів Python

Навіщо встановлювати власний пакет?

У файлі example_script.py

import mysklearn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mysklearn'

Дерево теки

home/
|-- mypackages
|   |-- mysklearn     <---
|       |-- __init__.py
|       |-- preprocessing
|       |   |-- __init__.py
|       |   |-- normalize.py
|       |   |-- standardize.py
|       |-- regression
|           |-- __init__.py
|           |-- regression.py
`-- myscripts
    `-- example_script.py     <---
Розроблення пакетів Python

setup.py

  • Використовується для встановлення пакета
  • Містить метадані про пакет
Розроблення пакетів Python

Структура теки пакета

Дерево теки для пакета з підпакетами


    mysklearn/
    |-- __init__.py
    |-- preprocessing
    |   |-- __init__.py
    |   |-- normalize.py
    |   |-- standardize.py
    |-- regression
    |   |-- __init__.py
    |   |-- regression.py
    |-- utils.py

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

Структура теки пакета

Дерево теки для пакета з підпакетами

mysklearn/      <-- зовнішня тека
|-- mysklearn   <--- внутрішня тека з кодом
    |-- __init__.py
    |-- preprocessing
    |   |-- __init__.py
    |   |-- normalize.py
    |   |-- standardize.py
    |-- regression
    |   |-- __init__.py
    |   |-- regression.py
    |-- utils.py

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

Структура теки пакета

Дерево теки для пакета з підпакетами

mysklearn/      <-- зовнішня тека
|-- mysklearn   <--- внутрішня тека з кодом
|   |-- __init__.py
|   |-- preprocessing
|   |   |-- __init__.py
|   |   |-- normalize.py
|   |   |-- standardize.py
|   |-- regression
|   |   |-- __init__.py
|   |   |-- regression.py
|   |-- utils.py
|-- setup.py   <-- скрипт налаштування у зовнішній теці
Розроблення пакетів Python

У файлі setup.py

# Імпортуйте потрібні функції
from setuptools import setup


# Викличте функцію setup setup(
author="James Fulton",
description="Повний пакет для лінійної регресії.",
name="mysklearn",
version="0.1.0",
)

номер версії = (мажорна) . (мінорна) . (патч)

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

У файлі setup.py

# Імпортуйте потрібні функції
from setuptools import setup, find_packages

# Викличте функцію setup
setup(
    author="James Fulton",
    description="Повний пакет для лінійної регресії.",
    name="mysklearn",
    version="0.1.0",

packages=find_packages(include=["mysklearn", "mysklearn.*"]),
)
Розроблення пакетів Python

Редаговане встановлення

pip install -e .
  • . = пакет у поточній теці
  • -e = редагований режим

Дерево теки для пакета з підпакетами

mysklearn/  <-- перейдіть сюди
|-- mysklearn
|   |-- __init__.py
|   |-- preprocessing
|   |   |-- __init__.py
|   |   |-- normalize.py
|   |   |-- standardize.py
|   |-- regression
|   |   |-- __init__.py
|   |   |-- regression.py
|   |-- utils.py
|-- setup.py
Розроблення пакетів Python

Давайте потренуємось!

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

Preparing Video For Download...