Как перестать беспокоиться и установить Python-проект другу под Windows

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Итак, вы закончили свою первую версию опенсорс проекта на Питоне, выложили её на Гитхаб, и даже написали честный ридми: "Требуется Python 3.10, поставьте зависимости через pip install -r requirements.txt"

И... через какое-то время вам звонит пользователь друг с вопросом: "Слушай, интересный проект, а как его под Windows поставить?"

Собственно, с этого момента у вас есть 3 варианта:

  1. Попытаться сэкономить всем время и попробовать упаковать ваш проект в EXE-файл через утилиты типа pyinstaller или Auto PY to EXE. Минус: при сколь-нибудь сложных зависимостях нужно будет ковыряться довольно долго, чтобы заставить EXE заработать. Второй минус: как вы думаете, на кого ляжет почетная обязанность собирать EXE-шники после каждого апдейта кода?

  2. Попытаться объяснить другу, что такое python, GIT и как всё это поставить. Минус: возможны проблемы в отношениях с другом :))) (Вариант: поставить всё самому через дистанционный доступ, но он требует слишком много времени если пользователей друзей больше 5)

  3. Дописать под себя набор BAT-файлов, о которых пойдет речь в статье, и которые:

    1. ставят сами Python и GIT в локальную папку проекта (в стиле conda)

    2. выкачивают свежую версию с Гитхаба (а также апдейтят её при необходимости)

    3. ставят нужные зависимости

    4. можно прописать несколько сценариев запуска приложения

    5. установленный проект можно перемещать в другие папки и между компами

Как я эти батники нашел

Есть такой интересный опенсорс проект, который позволяет запускать текстовые нейросети на локальном компьютере с веб-интерфейсом: 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 делает следующее:

  1. Скачивает проект micromamba (компактная замена conda). (Вначале выводится предупреждение - путь не должен содержать пробелов и нелатинских букв/цифр.)

  2. Устанавливает указанные пакеты (в частности, я указываю python3.10 и git; в моем BAT-файле есть еще выбор, установить ли тяжелый torch для Silero TTS, но вы можете этот выбор убрать) в installer_files.

  3. Активирует окружение

  4. Если репозитория вашего проекта ещё не существует - клонирует его с Гитхаба; если уже существует - пытается обновить с помощью git pull.

  5. Устанавливает или обновляет зависимости через call python -m pip install -r requirements.txt --upgrade. (У меня используются кастомные зависимости в call python -m pip install -r requirements_exe_runner.txt --upgrade, так что не забудьте поправить для своего проекта)

Собственно, после install в идеале наш проект полностью готов к работе.

run предельно простой:

  1. Он инициализирует окружение с нужными зависимостями

  2. Запускает нужный питон-файл через call python run.py (или что вы там укажете)

Также в проекте существует micromamba-cmd.bat, который позволяет в интерактивном режиме зайти в текущее окружение и что-то там подправить (например, поставить новые зависимости ручками если сильно нужно).

Переносимость

Установка переносимая; но после переноса в другое место будет выдавать ошибку "Micromamba not found" - потому что сформированные BAT-файлы Micromamba содержат абсолютные пути.

Для решения проблемы после переноса нужно удалить все BAT-файлы из installer_files\mamba\condabin и запустить run.bat - BAT-файлы будут перегенерированы.

Выводы

install.bat выполняет основную часть установки, ставя зависимости через Интернет, позволяет быстро обновлять проект до последней Git-версии, и занимает всего 90 строк кода.

Вот я с ним поработал и могу сказать - поправить его под свой проект занимает где-то полчаса-час (ну, вместе с тестированием мелочей, конечно).

По-моему, очень удобно.

Источник: https://habr.com/ru/articles/728846/


Интересные статьи

Интересные статьи

Привет, Хабр! В прошлый раз мы показали, как переоборудовали переговорную комнату для совещаний. Сегодня хотим поделиться своей историей разработки автоматизированной системы выдачи ИТ-оборудования — ...
Для большинства пользователей, вопросы, связанные с переключением языков ввода, давно решены. Уже много лет, как не требуется устанавливать отдельную программу-переключатель: всё уже встроенно в систе...
Подозреваю, что я не один такой, кто держит дома в режиме 24/7 маленький и тихий системный блок с Windows в качестве сервера, на который можно зайти по RDP (с того же сма...
Что быстрее — ASP.NET Core-приложение, развёрнутое в Docker-контейнере на Linux, или такая же программа, но запущенная на Windows-сервере, учитывая то, что всё это работает в службе прило...
Добро пожаловать в очередной выпуск Windows Terminal! Этот выпуск обновляет Windows Terminal Preview до версии 1.8 и основной Windows Terminal до версии 1.7. Обе сборки м...