Python - упаковка исходного дистрибутива
В настоящее время я пишу программу на Python и хочу распространить ее среди некоторых пользователей (и разработчиков). Я хотел бы сократить количество необходимых шагов для запуска программы до минимума.
Мой вариант использования относительно прост. Я хотел бы, чтобы процесс / инструмент / что угодно:
А) Загрузите список пакетов, необходимых для работы приложения.
Б) Запустите список сценариев Python, последовательно (например, создать базу данных, а затем запустить миграцию).
Я понимаю, что distlib уже делает это. Однако я нахожу документацию несколько запутанной, кажется, что есть API для установки скриптов, но не один для их автоматического выполнения.
В идеале я хотел бы указать список скриптов и список зависимостей, и программа установит их автоматически.
2 ответа
Возможно, лучший способ справиться с этим будет использовать make
с Makefile ( https://www.gnu.org/software/make/).
Distlib через файл setup.py поможет вам сделать его более читаемым, дав имена некоторым скриптам на python. И вы могли бы использовать make
Система цели / зависимостей для последовательного выполнения задач.
Если вы хотите придерживаться Python, вы также можете использовать Луиджи ( https://luigi.readthedocs.io/en/stable/), но здесь это кажется излишним.
Итак, я закончил писать свою собственную вещь, основываясь на том, как я хотел, чтобы интерфейс выглядел. Код, который устанавливает приложение, выглядит следующим образом:
from installtools import setup
scripts = ['create_database.py', 'run_migrations.py']
setup("Shelob", "requirements.txt", scripts)
Полный сценарий можно найти здесь: https://gist.github.com/fdemian/808c2b95b4521cd87268235e133c563f
Поскольку PIP не имеет общедоступного API( и вряд ли будет иметь его в ближайшем будущем), сценарий использует API подпроцесса для вызова:
pip install -r [needs_file_path]
После этого он вызывает указанные скрипты Python, один за другим. Хотя он, вероятно, не очень надежен, в качестве временного решения он, похоже, делает свое дело.