Статья Массовая установка Python на клиентские компьютеры с нужными библиотеками под Windows

Кирилл

Команда форума
Администратор
Сообщения
14,216
Реакции
6,246
Баллы
1,093
Всем привет.
До определенного времени можно успешно пользоваться упаковщиками типа Pyinstaller, cx_Freeze и иже с ними.
Я как то даже писал обертку на основе Pyinstaller.

Но, если вам нужна некоторая штука, которую тыкает пользователь - она устанавливает Python, нужные библиотеки, а сами модули вашей программы куда то помещает и выводит на нее ярлык на рабочий стол, то сейчас мы с вами такое придумаем.
План дествий:

1) Скачать нужную версию Python Download Python
2) Подготовить необходимые для нашей программы библиотеки
3) Написать небольшой bat файл или python скрипт по интеграции всего этого добра

4) Упаковать все в самораспаковывающийся архив с нужными параметрами

Итак, если пунктом №1 все ясно, то на пункте №2 остановимся подробнее.

Для удобства я заранее создал папку my distributive, далее запускаем командную строку.
Да, подразумевается, что сам Python и нужные библиотеки у вас изначально имеются на компьютере.

В командной строке вводим команду для перехода в наш каталог:
CMD/BATCH:
cd /d "E:/my distributive"

Путь к папке в кавычках, так как у меня присутствует пробел в нем.
Далее, для удобства, выводим список библиотек Python, которые установлены на данном компьтере:

Код:
pip list

Получаем вот такое добро:
список библиотек


Это наименование установленных библиотек и их версия.
Пролистываем данный список и, как только видим нужное нам наименование, вводим код:

CMD/BATCH:
pip wheel --wheel-dir=/your_path NamePackage

Тут стоить пояснить, что your_path - это полный путь к каталогу, в котором мы бы хотели сохранить локальную копию библиотеки.
В нашем случае это можно пропустить - ведь мы уже находимся там, где надо, верно?

А NamePackage - это имя библиотеки, которую вы хотите сохранить.
Выведенный ранее список поможет нам в правильности написания ее названия.
Вот так сохраним библиотеку psutil:
CMD/BATCH:
pip wheel --wheel-dir= psutil

1621428821249.png


В итоге в нашем каталоге появится такой файл:
psutil-5.8.0-cp39-cp39-win_amd64.whl

Ну, или похожий.
Если немного внимательнее посмотреть - есть привязка к версии библиотеки, версии Python и разрядности системы.

И такую же процедуру повторяем с каждой библиотекой, которая необходима для вашей программы.
Не нужно отдельно сохранять стандартные библиотеки, если вы планируете распространить инсталлятор Python с полным набором стандартных модулей.

Пункт №3.

Пишем небольшой bat файл или python скрипт по интеграции всего этого добра.

Сразу даю содержимое bat скрипта:
CMD/BATCH:
::Скрипт установки Python + нужных библиотек

@echo off >nul
Chcp 866 >nul
title Выполняется установка, ожидайте завершения...
cd /d %~dp0
echo Устанавливаю Python...
python.exe /passive
ping -n 10 127.0.0.1 > NUL
echo Устанавливаю нужные библиотеки...
pip install lxml-4.6.3-cp39-cp39-win_amd64.whl
pip install Pillow-8.2.0-cp39-cp39-win_amd64.whl
pip install psutil-5.8.0-cp39-cp39-win_amd64.whl
pip install wheel-0.36.2-py2.py3-none-any.whl
pip install xlrd-2.0.1-py2.py3-none-any.whl
ping -n 3 127.0.0.1 > NUL

Тут python.exe - это имя установочного файла Python, который мы с вами скачали ранее и скопировали в наш рабочий каталог.
Для удобства я его переименовал в python.exe.
Параметр /passive - это что бы юзер во время процесса своими руками ничего не трогал. Не люблю когда юзер любит все трогать и менять.
Временные задержки я установил с одной стороны, для того, что бы после установки Python система немного прогрузила нужные компоненты, а с другой стороны - для визуального восприятия.

Ладно, сознаюсь, обманул я вас.
Еще потребуется такой конфигурационный xml файлик: unattend.xml
Его содержимое (в нашем случае) должно быть таким:

XML:
<Options>
    <Option Name="PrependPath" Value="yes" />
    <Option Name="SimpleInstall" Value="yes" />
    <Option Name="SimpleInstallDescription">Установка завершена</Option>
</Options>

Но вообще, можно настроить вариант будущей установки Python и по своему вкусу - именно за это данный файл и отвечает.

Пункт №4.
Упаковать все в самораспаковывающийся архив с нужными параметрами.

Здесь все еще проще - я воспользовался WinRar, вы можете взять что угодно другое, обладающее таким инструментом, как создание самораспаковывающегося архива.
Производим нужные настройки, задаем каталог распаковки (я делаю program files\my programm), там же сразу можно прикрутить ярлык на нашу будущую программу и вложить сами скрипты программы.

1621430003763.png

Сам файл тоже небольшой получается, это с учетом, что я туда заложил иконки, картинки, модули и файлы настроек моей программы на Python

1621429939016.png

Вполне сносно, однако!

1621430147371.png



Далее этот установщик был роздан юзерам и развертывание программ Python на нескольких десятках компьютеров прошло успешно в автоматическом режиме.
Юзеры даже напугаться не успели.
Все, надеюсь, что кому то пригодится)
 
Последнее редактирование:
Сверху Снизу