Registry / web-framework / Eel
library0.18.2pypypi✓ verified 84d ago

Eel is a Python library for creating simple HTML/JS GUI applications with easy Python-JS interop. Current version is 0.18.2, requiring Python >=3.7. It uses Bottle as a web server and can launch a Chrome app mode window. Releases are occasional, with maintenance focused on compatibility and bug fixes.

pip install eel
INSTALL
IMPORT
SIG · EEL
E
Eel
web-frameworkpythonv0.18.2
Install
5.0s avg
Import
488ms
Disk
39MB
Pass rate
8/ 10
Env Coverage8 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.18.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✓ —
✓ 4.4s
py 3.11
✓ —
✓ 4s
py 3.12
✓ —
✓ 5.9s
py 3.13
✓ —
✓ 5.5s
py 3.9
✕ build_error
✕ build_error
39MB installed
● package 39MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

eel
import eel
from eel import start, init, ...
Commonly, people try to import submodules directly; but the recommended way is to import eel and use eel.start(), eel.init(), etc.

Minimal example: initialize Eel with a 'web' folder, expose a Python function, and start the app.

import eel # Initialize with your web folder eel.init('web') # Expose a Python function to JavaScript @eel.expose def say_hello(name): print(f'Hello {name}') # Start the app (will open a browser window) eel.start('index.html', size=(700, 500))
eel --version
Debug
Known issues
gotchaEel requires a Chrome-based browser (or Edge) to run in app mode. If Chrome is not installed, it falls back to a normal browser tab. Ensure Chrome/Chromium is in PATH or use the `mode` parameter.
fix
Install Google Chrome or set `mode='chrome'` explicitly. For headless, use `mode=None`.
affects: all
deprecatedThe `_js_result` callback mechanism for blocking JS results is deprecated and may be removed. Use async/await in JavaScript with `eel.expose` returning a promise.
fix
Use async functions in JavaScript: `result = await eel.my_python_function()()`
affects: >=0.15.0
gotchaIf your web folder contains subdirectories, Eel may not serve them correctly unless you call `eel.init()` with the correct path. Default is the current working directory.
fix
Use absolute paths or set the working directory before calling `eel.init()`.
affects: all
breakingIn v0.18.0, the dependency `typing_extensions` was added; older versions without it will fail on import. Also, `pkg_resources` was removed (use `importlib.resources`).
fix
Update to v0.18.2 or ensure `typing_extensions` is installed. For custom resource loading, use `importlib.resources` instead of `pkg_resources`.
affects: 0.18.0 - 0.18.2
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'typing_extensions'
Eel v0.18.0+ depends on typing_extensions for Python <3.11, but it may not be installed automatically in some environments.
fix
Run `pip install typing_extensions` or upgrade Eel: `pip install --upgrade eel`
AttributeError: module 'eel' has no attribute 'init'
Common when people do `from eel import init` but also have a local file named `eel.py` that shadows the module.
fix
Rename your local file to avoid conflict, or use `import eel` and then `eel.init()`.
Eel is not working, no window opens
Chrome/Chromium is not installed or not in PATH. Eel defaults to trying Chrome; if missing, it may silently fail or open a browser tab.
fix
Install Chrome or set `mode='edge'` for Microsoft Edge, or `mode=None` to just start the server without opening a browser.
JavaScript function not defined: eel.expose(...)
Calling a Python function from JS before Eel has fully initialized on the JS side.
fix
Ensure you call eel functions only after the page is loaded and eel.js is included. Use `window.onload` or `document.addEventListener('DOMContentLoaded', ...)`.
Error: No such file or directory: 'web/index.html'
The `web` folder relative to the script does not exist or the script is run from a different directory.
fix
Use absolute path: `eel.init(os.path.join(os.path.dirname(__file__), 'web'))`
Upgrade
Version history
0.18.2latest on PyPI · released Jun 22, 2025
Audit
Dependencies
bottlerequiredEel uses Bottle as its internal web server.
typing_extensionsrequiredRequired for type hints on Python <3.11 (added in v0.18.0).
Agent activity
85 hits · last 30 days
node
74
OpenAI (training)
1
Resources