Создать Python-пакет
Статья создана
Обновлена 14 мая 2026 г.
В этой инструкции описано, как создать Python-пакет для последующей загрузки в реестр Cloud Registry.
Структура Python-пакета
Пример структуры проекта:
my_package/ # Корневая директория проекта
│
├── my_package/ # Основной пакет (имя должно совпадать с именем проекта)
│ ├── __init__.py # Делает директорию Python-пакетом
│ └── core.py # Основной модуль (опционально)
│
├── tests/ # Директория для тестов
│ ├── __init__.py
│ └── test_core.py # Тесты для core.py
│
├── README.md # Описание проекта
├── LICENSE # Лицензия
└── pyproject.toml # Метаданные проекта
Создание пакета
pip + twine
Poetry
uv
-
Подготовьте окружение:
apt update && \ apt-get install python3 -y && \ apt-get install python3.12-venv -y && \ python3 -m ensurepip --default-pip -
Установите инструменты для сборки:
python3 -m venv my-venv && source my-venv/bin/activate pip install build twine -
Создайте структуру проекта:
mkdir -p my_package/my_package cd my_package -
Создайте файл
my_package/__init__.py:cat > my_package/__init__.py << 'EOF' def hello(): print("Hello from my package!") EOF -
Создайте файл
pyproject.toml:cat > pyproject.toml << 'EOF' [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] name = "my_package" version = "0.0.1" description = "A small example package" readme = "README.md" [project.scripts] my_package = "my_package:hello" EOF -
Создайте файл
README.md:cat > README.md << 'EOF' # my_package A small example package. EOF -
Соберите пакет:
python3 -m buildРезультат:
Successfully built my_package-0.0.1.tar.gz and my_package-0.0.1-py3-none-any.whlСобранные файлы появятся в директории
dist/. -
Проверьте пакет:
twine check dist/*Результат:
Checking dist/my_package-0.0.1-py3-none-any.whl: PASSED Checking dist/my_package-0.0.1.tar.gz: PASSED
-
Установите Poetry:
curl -sSL https://install.python-poetry.org | python3 - -
Создайте новый проект:
poetry new my_package cd my_packagePoetry автоматически создаст структуру проекта с
pyproject.toml. -
Отредактируйте
pyproject.toml:[tool.poetry] name = "my_package" version = "0.0.1" description = "A small example package" authors = ["Example Author <author@example.com>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.9" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" -
Создайте файл
mypackage/__init__.py:def hello(): return "Hello from my package!" -
Соберите пакет:
poetry buildРезультат:
Building my_package (0.0.1) - Building sdist - Built my_package-0.0.1.tar.gz - Building wheel - Built my_package-0.0.1-py3-none-any.whl
-
Установите uv:
curl -LsSf https://astral.sh/uv/install.sh | shИли через pip:
pip install uv -
Создайте новый проект:
uv init mypackage --lib && cd mypackage -
Создайте виртуальное окружение:
uv venv && source .venv/bin/activate -
Создайте файл
mypackage/__init__.py:cat > src/mypackage/__init__.py << 'EOF' def hello(name: str = "World") -> str: return f"Hello, {name}!" def add(a: int, b: int) -> int: return a + b EOF -
Соберите пакет:
uv buildРезультат:
Building my_package-0.0.1.tar.gz and my_package-0.0.1-py3-none-any.whl