Comments 9
Интересно, по сути это получается веб-приложение, но без веб-сервера?
Eel запускает локальный веб-сервер (по умолчанию на localhost:8000) и открывает Chrome с флагом --app, позволяющий задавать размер окна и чтобы это выглядело как обычное приложение. А потом через свой же веб-сервер позволяет функциям из javascript обмениваться данными с функциями на python. И наоборот. Внутри это все сделано на вебсокетах. Из-за этого есть минус, что все такие функции асинхронные. Впрочем, в javascript это можно обойти через await, а на питоне еще проще.
Самое интересное, что в качестве браузера можно использовать не только Chrome, но и встроенный в Windows 10 Edge, а всю программу с помощью PyInstaller запаковать в один .exe. В итоге получается автономная программа, которая будет работать на любом Windows 10, не требуя установленного Python.
Подробное и довольно понятное описание, как это все работает, есть на страничке этой библиотеки: https://github.com/ChrisKnott/Eel
Да, похоже. Таких гибридов "javascript + что-то для доступа к системе" уже полно) HTA, Electron, NW.js (бывший Node-Webkit). Даже для питона, помимо EEL, есть CEF Python.
Для тех кто не понял, зачем это нужно, поясню. С помощью таких инструментов из браузерного javascript можно вызывать функции python для доступа к дискам и остальным функциям системы. В Electron и NW это сделано с помощью Node.js. Там это органично переплелось, потому что оба работают на javascript. Что и обеспечило такой связке большую популярность. Браузер для отображения интерфейса, а Node.js для всего остального, что недоступно из браузерного javascript. Доступ к файлам и т.д.
К преимуществам EEL можно отнести то, что не только из браузерного javascript можно вызывать сложные расчеты на питоне (numpy, scipy, нейронные сети на Tensorflow/Pytorch), но и из питона можно вызывать браузерные функции. Что позволяет из питона использовать браузер для визуализации данных крутыми javascript библиотеками, вроде D3.js, Three.js.
Ну а недостаток, что для каждой функции, которую хотите вызвать из другого языка (из python в javascript или наоборот), надо создавать шаблон, как описано в документации к EEL.
А так да, конечно, можно использовать другие связки, которые вы описали выше, но они не всегда подходят для конкретных задач.
Здравствуйте, статья интересная, о этой либе знал давно, но все же. Я пытался ее упаковать в exe, и постоянно на сторонних ПК вылетала ошибка модулей. Можно где-нибудь отрыть гайд как нормально создать exeшник?
Для этого я просто создал отдельный файл в проекте (назвал его my_setup.py)
И поместил туда следующий код:
import os
name_proj = "test_eel"
noconsole = "" # ставим "" - если нужна консоль, " --windowed " - если не нужна
onefile = " --onefile " # указываем, что exe должен быть упакован в один файл
if __name__ == "__main__":
cmd_txt = f'python -m eel main.py front {onefile} {noconsole} --name {name_proj}'
os.system(cmd_txt)
По итогу у вас должна создаться папка dist с .exe файлом, его можно запускать (тестил только на вин 10)
см. так же тут
А вообще я запускал программу на разных пк, но на всех них стоял google chrome. Вам нужно смотреть, чтобы в eel.start('index.html', mode=«chrome», size=(760, 760)) параметр mode принимал значение того браузера, который есть на стороннем пк. Если не уверены, что там стоит chrome, то стоит сделать mode=«default».
Python & EEL. Делаем просто на Python’е и красиво на JS