Итак, вы закончили свою первую версию опенсорс проекта на Питоне, выложили её на Гитхаб, и даже написали честный ридми: "Требуется Python 3.10, поставьте зависимости через pip install -r requirements.txt"
И... через какое-то время вам звонит пользователь друг с вопросом: "Слушай, интересный проект, а как его под Windows поставить?"
Собственно, с этого момента у вас есть 3 варианта:
Попытаться сэкономить всем время и попробовать упаковать ваш проект в EXE-файл через утилиты типа pyinstaller или Auto PY to EXE. Минус: при сколь-нибудь сложных зависимостях нужно будет ковыряться довольно долго, чтобы заставить EXE заработать. Второй минус: как вы думаете, на кого ляжет почетная обязанность собирать EXE-шники после каждого апдейта кода?
Попытаться объяснить другу, что такое python, GIT и как всё это поставить. Минус: возможны проблемы в отношениях с другом :))) (Вариант: поставить всё самому через дистанционный доступ, но он требует слишком много времени если
пользователейдрузей больше 5)Дописать под себя набор BAT-файлов, о которых пойдет речь в статье, и которые:
ставят сами Python и GIT в локальную папку проекта (в стиле conda)
выкачивают свежую версию с Гитхаба (а также апдейтят её при необходимости)
ставят нужные зависимости
можно прописать несколько сценариев запуска приложения
установленный проект можно перемещать в другие папки и между компами
Как я эти батники нашел
Есть такой интересный опенсорс проект, который позволяет запускать текстовые нейросети на локальном компьютере с веб-интерфейсом: https://github.com/oobabooga/text-generation-webui
Проекты с нейросетями, как правило, это проекты с очень большим числом нетривиальных зависимостей. Например:
Вам нужно знать, нужно ли ставить версию torch с GPU ускорением от NVIDIA, или же надо ставить CPU-версию.
Часто нужно скачивать какие-то кастомные дополнительные Github-проекты библиотеки.
Надо ставить нетривиальные версии библиотек (проект выше, например, использует кастомную сборку bitsandbytes под Windows, которая позволяет запускать 4-битные нейросети, требующие меньше памяти)
И я был сильно удивлен, когда нашел проект от того же пользователя под названием one-click-installers, который решал все эти проблемы установки буквально в несколько BAT-файлов.
Собственно, я его установил (все заработало с первого раза), разобрался в BAT-файлах, и они меня так впечатлили своей компактностью, что я даже достаточно быстро сделал подобный компактный инсталлятор для своего голосового помощника Ирины.
Как это работает и как это настроить
В качестве базового проекта рекомендую взять мой инсталлятор, а за нетривиальными случаями обращаться к оригинальному one-click-installer.
Итак, есть два основных файла:
install.bat
run.bat
install делает следующее:
Скачивает проект micromamba (компактная замена conda). (Вначале выводится предупреждение - путь не должен содержать пробелов и нелатинских букв/цифр.)
Устанавливает указанные пакеты (в частности, я указываю python3.10 и git; в моем BAT-файле есть еще выбор, установить ли тяжелый torch для Silero TTS, но вы можете этот выбор убрать) в installer_files.
Активирует окружение
Если репозитория вашего проекта ещё не существует - клонирует его с Гитхаба; если уже существует - пытается обновить с помощью git pull.
Устанавливает или обновляет зависимости через
call python -m pip install -r requirements.txt --upgrade
. (У меня используются кастомные зависимости в call python -m pip install -r requirements_exe_runner.txt --upgrade, так что не забудьте поправить для своего проекта)
Собственно, после install в идеале наш проект полностью готов к работе.
run предельно простой:
Он инициализирует окружение с нужными зависимостями
Запускает нужный питон-файл через
call python run.py
(или что вы там укажете)
Также в проекте существует micromamba-cmd.bat, который позволяет в интерактивном режиме зайти в текущее окружение и что-то там подправить (например, поставить новые зависимости ручками если сильно нужно).
Переносимость
Установка переносимая; но после переноса в другое место будет выдавать ошибку "Micromamba not found" - потому что сформированные BAT-файлы Micromamba содержат абсолютные пути.
Для решения проблемы после переноса нужно удалить все BAT-файлы из installer_files\mamba\condabin и запустить run.bat - BAT-файлы будут перегенерированы.
Выводы
install.bat выполняет основную часть установки, ставя зависимости через Интернет, позволяет быстро обновлять проект до последней Git-версии, и занимает всего 90 строк кода.
Вот я с ним поработал и могу сказать - поправить его под свой проект занимает где-то полчаса-час (ну, вместе с тестированием мелочей, конечно).
По-моему, очень удобно.