Build and Deploy#
🛠 Сделаем скрипт build_and_publish.sh:#
Соберет
.whlи.tar.gzдля пакета,Очистит старые артефакты,
Копирует их в папку локального PyPI-сервера (
~/my-pypi-server).
📄 Пример скрипта#
Создай файл build_and_publish.sh в корне своего пакета (packages/nlp/):
#!/bin/bash
set -e # Остановиться при ошибке
PACKAGE_DIR=$(pwd) # Текущая папка пакета
DIST_DIR="$PACKAGE_DIR/dist" # Где появляются .whl и .tar.gz
LOCAL_PYPI=~/my-pypi-server # Куда выкладываем готовые файлы
echo "Очистка старых сборок..."
rm -rf "$DIST_DIR"
echo "Сборка пакета..."
python -m build
echo "Копирование новых файлов в локальный PyPI сервер..."
cp "$DIST_DIR"/* "$LOCAL_PYPI/"
echo "Готово! 🎉"
🚀 Как пользоваться#
Сделай скрипт исполняемым:
chmod +x build_and_publish.sh
Запускай его когда нужно собрать и обновить пакет:
./build_and_publish.sh
И всё!
В папке ~/my-pypi-server/ автоматически окажутся свежие .whl и .tar.gz.
🔥 Что ты выигрываешь#
Без скрипта |
Со скриптом |
|---|---|
Ручная сборка + копирование каждый раз |
Одна команда для всего |
Риск забыть что-то скопировать |
Гарантия чистой и полной выкладки |
📦 Бонусный уровень: Makefile#
Если хочешь сделать ещё красивее (особенно если пакетов будет много), можно написать Makefile.
Пример Makefile:
PACKAGE_DIR = $(shell pwd)
DIST_DIR = $(PACKAGE_DIR)/dist
LOCAL_PYPI = ~/my-pypi-server
build:
rm -rf $(DIST_DIR)
python -m build
cp $(DIST_DIR)/* $(LOCAL_PYPI)/
.PHONY: build
Тогда будет достаточно команды:
make build
И он сделает всё то же самое.
✨ Итого#
Теперь у тебя полный процесс:
Этап |
Что делаем |
|---|---|
Собрать пакет |
|
Обновить сервер |
Автоматически |
Установить в новом проекте |
|