Как установить библиотеку eel

Eel 0.14.0

pip install Eel Copy PIP instructions

Released: Aug 17, 2020

For little HTML GUI applications, with easy Python/JS interop

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT License

Tags gui, html, javascript, electron

Requires: Python >=3.6

Maintainers

Classifiers

Project description

Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries.

Eel hosts a local webserver, then lets you annotate functions in Python so that they can be called from Javascript, and vice versa.

Eel is designed to take the hassle out of writing short and simple GUI applications. If you are familiar with Python and web development, probably just jump to this example which picks random file names out of the given folder (something that is impossible from a browser).

Intro

There are several options for making GUI apps in Python, but if you want to use HTML/JS (in order to use jQueryUI or Bootstrap, for example) then you generally have to write a lot of boilerplate code to communicate from the Client (Javascript) side to the Server (Python) side.

The closest Python equivalent to Electron (to my knowledge) is cefpython. It is a bit heavy weight for what I wanted.

For some reason many of the best-in-class number crunching and maths libraries are in Python (Tensorflow, Numpy, Scipy etc) but many of the best visualization libraries are in Javascript (D3, THREE.js etc). Hopefully Eel makes it easy to combine these into simple utility apps for assisting your development.

Join Eel’s users and maintainers on Discord, if you like.

Install

Install from pypi with pip :

To include support for HTML templating, currently using Jinja2:

Usage

Directory Structure

All the frontend files should be put in a single directory (they can be further divided into folders inside this if necessary).

Starting the app

This will start a webserver on the default settings (http://localhost:8000) and open a browser to http://localhost:8000/main.html.

App options

Additional options can be passed to eel.start() as keyword arguments.

Some of the options include the mode the app is in (e.g. ‘chrome’), the port the app runs on, the host name of the app, and adding additional command line flags.

As of Eel v0.12.0, the following options are available to start() :

Exposing functions

Including this library creates an eel object which can be used to communicate with the Python side.

Any functions in the Python code which are decorated with @eel.expose like this.

. will appear as methods on the eel object on the Javascript side, like this.

Similarly, any Javascript functions which are exposed like this.

can be called from the Python side like this.

The exposed name can also be overridden by passing in a second argument. If your app minifies JavaScript during builds, this may be necessary to ensure that functions can be resolved on the Python side:

When passing complex objects as arguments, bear in mind that internally they are converted to JSON and sent down a websocket (a process that potentially loses information).

Eello, World!

Putting this together into a Hello, World! example, we have a short HTML page, web/hello.html :

and a short Python script hello.py :

. in the terminal, and.

. in the browser console (press F12 to open).

Return values

While we want to think of our code as comprising a single application, the Python interpreter and the browser window run in separate processes. This can make communicating back and forth between them a bit of a mess, especially if we always had to explicitly send values from one side to the other.

Eel supports two ways of retrieving return values from the other side of the app, which helps keep the code concise.

Callbacks

When you call an exposed function, you can immediately pass a callback function afterwards. This callback will automatically be called asynchrounously with the return value when the function has finished executing on the other side.

For example, if we have the following function defined and exposed in Javascript:

Then in Python we can retrieve random values from the Javascript side like so:

(It works exactly the same the other way around).

Synchronous returns

In most situations, the calls to the other side are to quickly retrieve some piece of data, such as the state of a widget or contents of an input field. In these cases it is more convenient to just synchronously wait a few milliseconds then continue with your code, rather than breaking the whole thing up into callbacks.

To synchronously retrieve the return value, simply pass nothing to the second set of brackets. So in Python we would write:

You can only perform synchronous returns after the browser window has started (after calling eel.start() ), otherwise obviously the call with hang.

In Javascript, the language doesn’t allow us to block while we wait for a callback, except by using await from inside an async function. So the equivalent code from the Javascript side would be:

Читайте также:  Если утерян вкладыш в трудовую книжку что делать

Asynchronous Python

. we would then have three «threads» (greenlets) running;

Building distributable binary with PyInstaller

If you want to package your app into a program that can be run on a computer without a Python interpreter installed, you should use PyInstaller.

Источник

Как установить библиотеку в Python?

Рассмотрим способы установки библиотек в Python.

Введение

В Python существует пакетный менеджер pip для установки библиотек из публичного репозитория. Он упрощает установку библиотек и их зависимостей, а так же обновление и удаление уже установленных пакетов.

Более подробно про pip в этой статье я рассказывать не буду, а перейдем сразу к его установке и использованию.

Установка pip в Windows

Во время установки python в ОС Windows пакетный менеджер pip устанавливается автоматически. Для проверки достаточно открыть командную строку и ввести pip —version

У нас установлена версия pip 20.1.1

Установка pip в Linux

В Linux ситуация неоднозначная. В части дистрибутивов pip установлен по умолчанию, но в части нет. Например в Debian и Ubuntu pip отсутствует и требует установки дополнительного пакета через apt.

Воспользуйтесь командой apt install python3-pip для установки

На моей raspberry pi 4 уже установлен этот пакет. Важный момент, на который стоит обратить внимание, что в дистрибутивах Linux для 3й версии python бинарный файл pip запускается с помощью команды pip3

Установить библиотеку

Для установки библиотеки выполните команду pip install vk_api

Просмотреть список установленных библиотек

Для просмотра уже установленых библиотек введите pip3 freeze

Заключение

В этой статье мы посмотрели доступные варианты установки библиотек для Python в операционных системах семейства Windows и Linux.

Источник

Python & EEL. Делаем просто на Python’е и красиво на JS

Вступление

Тема красивых интерфейсов была и будет актуальна всегда, кто-то использует для создания графических приложений C#, кто-то использует Java, кто-то уходит в дебри C++, ну а кто-то извращается с Python, используя tkinter или PyQT. Существуют различные технологии, позволяющие совмещать красоту графических дизайнов, создаваемых на HTML, CSS и JS с гибкостью в реализации логики приложения, которую может дать другой язык. Так вот, для тех, кто пишет на самом лучшем языке программирования Python, есть возможность писать красивые интерфейсы на HTML, CSS и JS и прикручивать к ним логику на Python.

В этой статья я хочу показать на небольшом примере, как же все таки создать простое и красивое десктопное приложение на HTML, CSS, JS и Python. В качестве библиотеки для связи всех компонентов будем использовать EEL.

Установка

Оговорюсь, что я работаю на windows 10 x64.

Для начала установим саму библиотеку выполнив простую команду:
pip install eel
После установки одной лишь библиотеки можно начинать наш путь.

Наше приложение будет выглядеть таким образом:

Логика приложения очень простая: при нажатии кнопки “рассчитать” считываются значения в поле для ввода рублей, полученные данные отправляются в Python, где происходит расчет курса валют. Python возвращает нам данные и мы выводим из через JS

Раскидываем по папкам

Разобьем теперь наш проект на модули. В папку “front” будем класть всё, что связано с графической частью нашего приложения. В папку “back” будем помещать все наши исходники на python. Еще создадим папку middle, в которую будем помещать методы, вызываемые из JS (об этом чуть позже). В Главной директории создадим файл main.py, он будет запускать наше приложение.

Логика на Python

В качестве теста реализуем простое приложение конвертер валют (да-да, банально, никому не надо, на гитхабе миллион проектов). Для этого на python установим библиотеку CurrencyConverter:
pip install currencyconverter

Теперь приступим к написанию логики на python. Реализуем метод, который на вход будет принимать сумму, валюту с которой нам надо перевести и валюту, на которую нам надо перевести. Создадим “convert.py” в директории “back” и запишем в него следующий код:

Теперь в директории “middle” создадим файл “mid_convert.py” и пропишем следующий код:

Что здесь вообще происходит? Файл “mid_convert.py” будет служит связующим звеном между JS и Python. Декоратор @eel.expose дает нашей программе понять, что функция, описанная ниже, может быть вызвана из JS. Таким образом, любая функция, которую мы в будущем захотим вызывать из JS, должна быть обернута декоратором @eel.expose. Очевидно, что не имеет смысла делать лишних модулей, если у вас простой проект, можно было обернуть декоратором функцию “convert_value” в модуле “convert.py”. В больших проектах разбиение программы на такие слои позволит легче расширять и оптимизировать код.

Подключаем Python к JS

Теперь подключим нашу логику на Python к самому JS. Для этого примера я использую простую страничку, сверстанную чисто при помощи HTML, CSS (но вы можете подключить к своей страничке vue.js, react.js и другие популярные фреймворки, которые нужны вам для работы с графикой). Первым делом необходимо подключить библиотеку eel к самому JS:

Далее реализуем функционал кнопки “рассчитать”. По нажатию кнопки первым делом необходимо считать значение рублей и пойти по каждой валюте, чтобы перевести значение.

Обратите внимание на строку “let value_cur = await eel.convert_value_py(value_rub, «RUB», name_cur)();”. Важно, что вызов функции из питона происходит в асинхронном режиме, поэтому обязательно необходимо сделать асинхронной ту функцию, в которой есть вызов Python кода. При вызове функции из eel необходимо ставить пару (), где в первые круглые скобки будут передаваться наши аргументы.

Читайте также:  Аудит sgs что это

Проверим, работает ли.

Как мы видим, все работает.

Запуск программы

Для запуска кода используем файл “main.py”. В нем импортируем библиотеку eel и всё, что мы писали в файле “min_convert.py” для того, чтобы при запуске проекта подтянуть все функции, которые мы оборачивали в eel.expose:

Теперь необходимо проинициализировать через eel ту директорию, где лежит front-end нашего приложения. При помощи команды eel.init(args). Далее для запуска самого приложения вызывает метод eel.start(args):

Метод eel.start принимает на вход несколько параметров (подробнее о них см. официальную документацию по eel). Самым интересным параметром является “mode”. При помощи него вы можете запустить свой проект, как в браузере, так и в виде отдельного приложения. Например, вы можете указать параметр “default”, в таком случае приложению будет запускать в браузере по умолчанию. Если у вас стоит google chrome, то указав параметр “mode=chrome” ваша программа откроется в виде отдельного приложения.

Также можно использовать chromium. Для этого скачиваем его с официального сайта. Разархивируем его в какую-нибудь папку и прописываем следующий код в нашем “main.py”:

Вывод

Как мы видим, то создавать красивые десктопные приложения с использованием Python в качестве языка для реализации основной логики не так сложно. Вы можете устанавливать какие угодно библиотеки, реализовать нужный код с использованием Python, а писать красивые интерфейсы на HTML,CSS и JS.

Источник

Как устанавливать пакеты в Python — с PIP и без

Прежде чем что-то устанавливать, давайте разберёмся, что такое пакет, чем он отличается от модуля, и как с ним работать. У слова «пакет» применительно к Python два значения.

Установка PIP для Python 3 и 2

Если вы используете виртуальные окружения на базе venv или virtualenv, pip уже установлен. Начиная с Python 3.4 (для Python 2 — с версии 2.7.9) pip поставляется вместе с интерпретатором. Для более ранних версий устанавливать менеджер пакетов нужно вручную. Вариантов два:

C помощью скрипта get_pip.py — быстро.

Через setuptools — кроме pip сможем использовать easy_install.

Вариант 1. Скачиваем скрипт get_pip.py и запускаем в консоли. Для этого открываем терминал через Win+R>»cmd»>OK и пишем:

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

Вариант 2. Скачиваем архив с setuptools из PYPI и распаковываем в отдельный каталог. В терминале переходим в директорию setuptools c файлом setup.py и пишем:

python setup.py install

Установка пакета в pip

Пора запустить pip в Python и начать устанавливать пакеты короткой командой из консоли:

pip install имя_пакета

Обновить пакет не сложнее:

Если у вас последняя версия пакета, но вы хотите принудительно переустановить его:

Посмотреть список установленных пакетов Python можно с помощью команды:

Найти конкретный пакет по имени можно командой «pip search». О других командах можно прочесть в справке, которая выдается по команде «pip help».

Удаление пакета Python

Когда пакет больше не нужен, пишем:

pip uninstall имя_пакета

Как установить пакеты в Python без pip

он не удаляет пакеты,

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

Если нужно скачать пакет из альтернативного источника, вы можете задать URL или локальный адрес на компьютере:

Список пакетов, установленных через easy_install, хранится в файле easy-install.pth в директории /libs/site-packages/ вашего Python.

К счастью, удалять установленные через easy_install пакеты можно с помощью pip. Если же его нет, потребуется удалить пакет вручную и стереть сведения о нем из easy-install.pth.

Теперь вы умеете ставить и удалять пакеты для вашей версии Python.

Кстати, для тех, кто изучает Python, мы подготовили список полезных и практичных советов.

Прежде чем что-то устанавливать, давайте разберёмся, что такое пакет, чем он отличается от модуля, и как с ним работать. У слова «пакет» применительно к Python два значения.

Установка PIP для Python 3 и 2

Если вы используете виртуальные окружения на базе venv или virtualenv, pip уже установлен. Начиная с Python 3.4 (для Python 2 — с версии 2.7.9) pip поставляется вместе с интерпретатором. Для более ранних версий устанавливать менеджер пакетов нужно вручную. Вариантов два:

C помощью скрипта get_pip.py — быстро.

Через setuptools — кроме pip сможем использовать easy_install.

Вариант 1. Скачиваем скрипт get_pip.py и запускаем в консоли. Для этого открываем терминал через Win+R>»cmd»>OK и пишем:

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

Вариант 2. Скачиваем архив с setuptools из PYPI и распаковываем в отдельный каталог. В терминале переходим в директорию setuptools c файлом setup.py и пишем:

python setup.py install

Установка пакета в pip

Пора запустить pip в Python и начать устанавливать пакеты короткой командой из консоли:

pip install имя_пакета

Обновить пакет не сложнее:

Если у вас последняя версия пакета, но вы хотите принудительно переустановить его:

Посмотреть список установленных пакетов Python можно с помощью команды:

Найти конкретный пакет по имени можно командой «pip search». О других командах можно прочесть в справке, которая выдается по команде «pip help».

Читайте также:  халф иннинг в бейсболе что такое

Удаление пакета Python

Когда пакет больше не нужен, пишем:

pip uninstall имя_пакета

Как установить пакеты в Python без pip

он не удаляет пакеты,

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

Если нужно скачать пакет из альтернативного источника, вы можете задать URL или локальный адрес на компьютере:

Список пакетов, установленных через easy_install, хранится в файле easy-install.pth в директории /libs/site-packages/ вашего Python.

К счастью, удалять установленные через easy_install пакеты можно с помощью pip. Если же его нет, потребуется удалить пакет вручную и стереть сведения о нем из easy-install.pth.

Теперь вы умеете ставить и удалять пакеты для вашей версии Python.

Кстати, для тех, кто изучает Python, мы подготовили список полезных и практичных советов.

Источник

И еще несколько полезных библиотек для Python (с примерами)

Введение

У python одно из самых крупных комьюнити, это обусловлено тем, что этот язык любят многие за его простоту и универсальность. Очень много энтузиастов, которые создают всё новые и новые библиотеки для облегчения разработки, поэтому среди всего этого разнообразия каждый может подобрать несколько библиотек для себя. На github существует много проектов, которые можно встроить к себе в проект, чтобы оптимизировать, улучшить или просто расширить его функционал.

Хотелось бы рассмотреть несколько интересных на мой взгляд библиотек.

Стилизация print

icecream

Для форматирования вывода существует одна удобная библиотека под названием icecream. Она помогает упростить написание логов или принтов для отладки. Рассмотрим пример её работы:

Чтобы подключить информацию о том, в каком месте программы происходит вывод, необходимо добавить всего лишь один аргумент в конфигурации модуля:

Это помогает более точно понять в каком месте происходит сбой в работе программы:

Также можно поменять префикс, который добавляется в начале строки, по дефолту он задан “ic|”. Удобно добавить время для вывода, чтобы видеть в какой момент времени и сколько занимал переход от одного принта к другому.

Если у вас уже имеются расставленные принты в коде, то легко можно переприсвоить print на ic:

Рассмотрим пример вывода более сложных структур, например, словарей:

Как видно на скриншоте, то вывод данных в таком формате читать гораздо легче, нежели обычный принт.

Также эта библиотека предоставляет возможность стилизовать вывод в зависимости от предоставляемых данных. Например, если есть необходимость дополнительно оформлять текст ошибки (Exception) или есть желание дополнительно выводить тип данных:

colorama

Многопоточность (многозадачность)

multitasking

Достаточно выполнить простую установку: pip install multitasking и далее оборачивать метод декоратором @task

И если удалить @multitasking.task, код выполнится последовательно:

Связь с другими языками

pythonnet

Иногда возникает потребность запустить код, написанный на другом языке, через Python, например, в целях проверки работы какого-либо стороннего модуля или для оптимизации кода. Существует несколько библиотек, позволяющих сделать это, например, pythonnet позволяет запустить некоторую часть кода, написанную на C# в Python (pythonnet позволяет рассматривать множество элементов clr, как модули в python).

Обращаемся к C# через Python

JPype

Создание десктопных приложений и UI

Для работы с созданием графических приложений есть несколько популярных библиотек, в частности встроенный tkinter и Qt. Но когда необходимо сделать красивое, легковесное графическое приложение, то хотелось бы использовать что-то более мощное, например, html+css+js, именно с этим может помочь библиотека EEL. Она позволяет создать десктопное приложение, где в качестве графической оболочки используется html, css и js (можно использовать различные фреймворки), а в качестве языка для написания бэк-части используется Python (подробнее тут).

Приведем простой пример использования библиотеки. Python код:

И сама структура проекта должна выглядеть так:

Можно запустить файл main.py и убедиться, что всё работает:

Анимация математических операций и функций

manim

Для создания различного рода графика существуют популярные библиотеки по типу matplotlib, seaborn (построенный поверх matplotlib и pandas). Но хотел бы отметить библиотеку, позволяющую создавать анимации различных графиков, функций и различного рода пользовательских текстов: Manim.

Также более серьёзный пример работы:

Оценка производительности

pympler

Потребление памяти в Python отдельная проблема, которой можно посвятить много времени, поэтому зачастую приходится следить за тем, чтобы python не сожрал всю оперативку. Для проверки памяти есть замечательный модуль pympler, который поможет не только посмотреть память, занимаемую объектом, но также поможет проследить за памятью, которую занимают отдельные классы или типы данных:

Проследим за изменением памяти, занимаемой классом A:

И в целом за памятью, занимаемой различными структурами

py-spy

Но знать распределение памяти зачастую недостаточно, так как программа может тормозить и не выполнять работу за ожидаемое время. В таком случае необходимо отследить, какие процессы сколько времени занимают.

В таком случае можно воспользоваться библиотекой py-spy, она позволяет без остановки программы проверить, сколько времени какие процессы в ней занимают. Установить библиотеку можно через pip install py-spy. Усложним код предыдущей программы, создадим дополнительный модуль sec.py:

Обработка языков

pymorphy2

Плюсы этой библиотеки в том, что она позволяет обрабатывать до нескольких десятков тысяч слов в секунду, занимает мало памяти и основана на словаре opencorpora.

Небольшой пример использования библиотеки:

Заключение

Существует огромное количество малоизвестных библиотек, которые могут облегчить жизнь разработчику, поэтому в огромном сообществе python-разработчиков всегда можно найти что-то для своего проекта, что поможет расширить функционал вашего проекта или ускорить работу как самого проекта, так и его разработки.

Источник

Обучающий проект