Перевод публикуется с сокращениями, автор оригинала Ahmed Bouchefra.
Что понадобится
Это руководство предназначено для разработчиков на Python, которые хотят создавать настольные
приложения с графическим интерфейсом. Мы представим Electron – отличный инструмент, использующий современные веб-технологии: HTML, CSS, JavaScript и связанные с ними фреймворки. Мы также расскажем о различных способах подключения Python и Electron, например,
, child_process
и сервер python-shell
HTTP (Flask)
.
Вам понадобится:
- знание Python;
- умение работать с JS, HTML и CSS;
- навыки установки и использования пакетов Node.js из npm.
Шаг 1. Настраиваем среду разработки
В этом разделе мы настроим среду разработки для запуска примеров.
Установка Node.js и npm
Существуют различные способы для установки данных инструментов:
- установочный файл для вашей операционной системы;
- менеджер пакетов;
- менеджер NVM (Node Version Manager) для установки и управления версиями Node.js.
Самое простое – зайти на официальный сайт и загрузить установочный файл, а затем выполнить инструкции по установке Node.js и npm в вашей ОС.
Настройка Electron
Разработка на Electron – это, как ни странно, разработка на Node.js. Поскольку Node.js уже должен быть установлен в предыдущем пункте, переходите к настройке, иначе почитайте в официальном хелпе о начальной настройке для разных ОС.
Из директории проекта запустите команду:
Процесс установки содержит различные вариации – изучите их в специальном разделе.
Настройка виртуальной среды Python
Чтобы проверить, что в вашей системе установлен Python 3, откройте терминал и выполните следующую команду:
А теперь давайте создадим виртуальную среду.
Создание виртуальной среды
Виртуальная среда
позволяет создать окружение для изоляции зависимостей текущего проекта. Это
позволит вам избежать конфликтов между пакетами разных версий. В Python 3 для этих целей можно использовать модуль venv
. Перейдите в терминал и
выполните следующую команду:
Далее необходимо активировать среду с помощью следующей команды:
В Windows виртуальную среду можно активировать с помощью сценария Scripts\activate.bat:
Все готово и можно устанавливать пакеты.
Шаг 2. Создаём Node.js-приложение
Начнём с создания папки
для проекта и файла package.json
внутри нее с помощью следующих команд:
Команда init
сгенерирует
файл package.json
со следующим содержанием:
Вы можете вручную настроить
значения в этом файле на свое усмотрение. Далее создайте внутри рабочей директории два файла: index.html
и
index.js
:
Связываем Electron и Python
Каким-то образом нам понадобится связать между собой Electron и Python.
В компьютерных науках inter-process communication или interprocess communication (IPC) относится к механизмам, которые предоставляет ОС, чтобы позволить процессам управлять общими данными. Как правило, приложения могут использовать IPC, классифицированные как клиенты и серверы, где клиент запрашивает данные, а сервер отвечает на запросы.
IPC относится к набору механизмов, поддерживаемых ОС, которые позволяют различным локальным или удаленным процессам взаимодействовать друг с другом. Например, в нашем случае мы хотим разрешить связь между процессами Electron и Python.
Рассмотрим, как этого достичь.
Создание процесса Python с помощью child_process
Node.js предоставляет модуль child_process, позволяющий создавать дочерние процессы.
Давайте используем его, чтобы породить процесс Python и запустить простой скрипт calc.py. Мы будем использовать simplecalculator для выполнения простых вычислений в Python, поэтому, сначала запустим следующую команду для его установки:
Внутри папки проекта создайте папку py, а внутри создайте файл calc.py:
Откройте calc.py и добавьте следующий код, который выполняет вычисление и выводит результат в стандартный вывод:
Затем создайте renderer.js и добавьте туда следующий код для создания процесса Python и выполнения скрипта py/calc.py:
Затем откройте index.html и обновите его следующим образом:
Использование python-shell
Теперь посмотрим, как использовать python-shell.
Python-shell – это npm-пакет, обеспечивающий простой способ запуска скриптов Python из Node.js с межпроцессным взаимодействием и обработкой ошибок.
Вы можете также использовать python-shell для:
- порождения скриптов Python;
- переключения между текстовым, JSON и двоичным режимами;
- выполнения передачи данных через потоки stdin и stdout;
- получения трассировок стека в случае возникновения ошибок.
Перейдите в терминал и выполните следующую команду для установки python-shell:
Затем откройте renderer.js
и перепишите функцию sendToPython()
следующим образом:
Использование связи клиент-сервер
Теперь рассмотрим другой способ создания связи между Python и Electron с помощью сервера HTTP.
В терминале выполните следующую команду для установки Flask и Flask-Cors:
В папке py вашего проекта создайте файл server.py и добавьте следующий код для запуска сервера Flask, который выполняет вычисление и возвращает результат в виде HTTP-ответа:
Затем откройте файл renderer.js и добавьте следующий код для создания Python и запуска server.py:
Резюме
В этом руководстве мы представили Electron для Python-разработчиков, который может быть отличным и простым инструментом для создания GUI с помощью современных веб-технологий, основанных на HTML, CSS и JavaScript. На понятном примере с калькулятором были рассмотрены различные способы подключения Python и Electron: child_process, python-shell и сервер HTTP (Flask).
Комментарии