{"id":23655,"library":"Eel","title":"Eel","description":"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.","status":"active","version":"0.18.2","language":"python","source_language":"en","source_url":"https://github.com/python-eel/Eel","tags":["gui","html","javascript","interop","desktop"],"install":[{"cmd":"pip install eel","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Eel uses Bottle as its internal web server.","package":"bottle","optional":false},{"reason":"Required for type hints on Python <3.11 (added in v0.18.0).","package":"typing_extensions","optional":false}],"imports":[{"note":"Commonly, people try to import submodules directly; but the recommended way is to import eel and use eel.start(), eel.init(), etc.","wrong":"from eel import start, init, ...","symbol":"eel","correct":"import eel"}],"quickstart":{"code":"import eel\n\n# Initialize with your web folder\neel.init('web')\n\n# Expose a Python function to JavaScript\n@eel.expose\ndef say_hello(name):\n    print(f'Hello {name}')\n\n# Start the app (will open a browser window)\neel.start('index.html', size=(700, 500))","lang":"python","description":"Minimal example: initialize Eel with a 'web' folder, expose a Python function, and start the app."},"warnings":[{"fix":"Install Google Chrome or set `mode='chrome'` explicitly. For headless, use `mode=None`.","message":"Eel 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.","severity":"gotcha","affected_versions":"all"},{"fix":"Use async functions in JavaScript: `result = await eel.my_python_function()()`","message":"The `_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.","severity":"deprecated","affected_versions":">=0.15.0"},{"fix":"Use absolute paths or set the working directory before calling `eel.init()`.","message":"If 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.","severity":"gotcha","affected_versions":"all"},{"fix":"Update to v0.18.2 or ensure `typing_extensions` is installed. For custom resource loading, use `importlib.resources` instead of `pkg_resources`.","message":"In 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`).","severity":"breaking","affected_versions":"0.18.0 - 0.18.2"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run `pip install typing_extensions` or upgrade Eel: `pip install --upgrade eel`","cause":"Eel v0.18.0+ depends on typing_extensions for Python <3.11, but it may not be installed automatically in some environments.","error":"ModuleNotFoundError: No module named 'typing_extensions'"},{"fix":"Rename your local file to avoid conflict, or use `import eel` and then `eel.init()`.","cause":"Common when people do `from eel import init` but also have a local file named `eel.py` that shadows the module.","error":"AttributeError: module 'eel' has no attribute 'init'"},{"fix":"Install Chrome or set `mode='edge'` for Microsoft Edge, or `mode=None` to just start the server without opening a browser.","cause":"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.","error":"Eel is not working, no window opens"},{"fix":"Ensure you call eel functions only after the page is loaded and eel.js is included. Use `window.onload` or `document.addEventListener('DOMContentLoaded', ...)`.","cause":"Calling a Python function from JS before Eel has fully initialized on the JS side.","error":"JavaScript function not defined: eel.expose(...)"},{"fix":"Use absolute path: `eel.init(os.path.join(os.path.dirname(__file__), 'web'))`","cause":"The `web` folder relative to the script does not exist or the script is run from a different directory.","error":"Error: No such file or directory: 'web/index.html'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}