A Python distribution for the browser and Node.js based on WebAssembly, enabling Python to run in web environments.
Pyodide is a Python distribution that runs in web browsers and Node.js using WebAssembly technology. It ports CPython to WebAssembly, allowing developers to execute Python code directly in client-side environments without requiring server-side Python interpreters. This enables interactive scientific computing, data visualization, and Python-powered web applications entirely in the browser.
Data scientists, researchers, and web developers who want to run Python code in browser environments, create interactive computational notebooks, or build web applications with Python's scientific computing libraries without server dependencies.
Pyodide provides the unique ability to run full Python with its ecosystem directly in browsers, offering seamless JavaScript-Python interoperability and access to scientific packages like NumPy and pandas in web environments where Python traditionally couldn't execute.
Pyodide is a Python distribution for the browser and Node.js based on WebAssembly
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Runs CPython directly in browsers and Node.js via WebAssembly, eliminating server-side dependencies for Python code execution, as stated in the README.
Provides a robust foreign function interface for mixing JavaScript and Python with full error handling and async support, enabling smooth integration in web apps.
Supports many pure Python and C-extended packages from PyPI via micropip, including NumPy and pandas, bringing scientific computing to the browser.
Python code has full access to browser Web APIs when running in web environments, allowing rich client-side interactions without JavaScript intermediaries.
Execution via WebAssembly is slower than native Python, making CPU-intensive tasks less efficient and potentially unsuitable for real-time applications.
Not all Python packages with C extensions are ported; the ecosystem is curated, and some libraries may be missing or require complex builds, as noted in the README.
The WebAssembly build can be several megabytes in size, impacting page load times and user experience in bandwidth-sensitive environments.
Building from source or adding new packages requires expertise with Emscripten and cross-compilation toolchains, adding to development overhead.