# pyodide/pyodide

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pyodide-pyodide).**

14,234 stars · 994 forks · Python · mpl-2.0

## Links

- GitHub: https://github.com/pyodide/pyodide
- Homepage: https://pyodide.org/en/stable/
- awesome-repositories: https://awesome-repositories.com/repository/pyodide-pyodide.md

## Topics

`python` `webassembly`

## Description

This project provides a full Python interpreter compiled to WebAssembly, enabling the execution of Python code and scientific libraries directly within web browsers and server-side environments. By bridging the gap between language runtimes, it allows developers to run computational tasks, manage packages, and perform data analysis in client-side environments without requiring a backend server.

The platform distinguishes itself through a comprehensive foreign function interface that enables bidirectional data exchange, object proxying, and function calling between Python and JavaScript. It integrates with the browser event loop to maintain responsiveness during heavy computation and provides a virtualized, POSIX-compliant filesystem that maps memory buffers to file paths, ensuring compatibility with standard library input and output operations.

The environment supports a wide range of development workflows, including interactive notebooks, automated testing, and background worker execution. It includes a dedicated package manager for fetching and installing dependencies, as well as tools for network request interception, DOM manipulation, and graphical output rendering. These capabilities allow for the creation of full-stack applications that execute business logic and data processing entirely on the client side.

The runtime is distributed as a set of static files that can be loaded via CDN or bundled for offline use. It includes built-in support for performance benchmarking, error traceback formatting, and package integrity verification to assist in debugging and maintaining secure execution environments.

## Tags

### Programming Languages & Runtimes

- [Python Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/python-runtimes.md) — Runs Python code and scientific libraries directly in the browser by leveraging WebAssembly.
- [Foreign Function Interfaces](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/foreign-function-interfaces.md) — Provides a foreign function interface for bidirectional data exchange and function calling between Python and JavaScript.
- [Python-JavaScript Bridges](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/language-runtimes/language-host-runtime-bridges/python-javascript-bridges.md) — Enables bidirectional data exchange, object proxying, and function calling between Python and JavaScript.
- [WebAssembly](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly.md) — Runs a full language interpreter inside a sandboxed WebAssembly binary environment for native-speed execution.
- [Language Interoperability](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability.md) — Provides mechanisms and bridges that allow different programming languages to communicate and share data. ([source](https://cdn.jsdelivr.net/gh/pyodide/pyodide@main/README.md))
- [Sandboxed Code Execution Environments](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtimes/sandboxed-code-execution-environments.md) — Executes code strings within a sandboxed environment to bridge logic between the host language and the embedded interpreter. ([source](https://pyodide.org/en/stable/usage/api/python-api.html))
- [Asynchronous Runtime Adapters](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-runtime-adapters.md) — Provides abstraction layers that enable libraries to operate natively across different asynchronous event loops. ([source](https://pyodide.org/en/stable/usage/api/python-api/webloop.html))
- [ES Module Integrations](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/module-management/module-systems/es-module-integrations.md) — Registers external objects as importable modules to allow code to access and interact with native browser APIs. ([source](https://pyodide.org/en/stable/usage/api/python-api.html))
- [Runtime Execution Environments](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments.md) — Hosts and manages the lifecycle of running applications while enabling direct manipulation of browser or system APIs. ([source](https://pyodide.org/en/stable/usage/quickstart.html))
- [Global Scope Exporters](https://awesome-repositories.com/f/programming-languages-runtimes/language-interoperability/native-c-interoperability/global-variable-mappings/global-scope-exporters.md) — Exposes variables and functions to the host environment for reading, writing, and bidirectional data exchange. ([source](https://pyodide.org/en/stable/usage/quickstart.html))

### Development Tools & Productivity

- [Browser-Based Runtimes](https://awesome-repositories.com/f/development-tools-productivity/python-development-tools/script-execution-engines/python-scripting-environments/browser-based-runtimes.md) — Provides a platform for running Python code and scientific libraries directly in the browser.
- [Python Package Managers](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/python-package-managers.md) — Manages the fetching, installation, and dependency resolution of Python packages within isolated web environments.
- [Package Installers](https://awesome-repositories.com/f/development-tools-productivity/package-installers.md) — Provides core utilities for installing and managing Python packages from remote repositories within the runtime. ([source](https://pyodide.org/en/stable/usage/loading-packages.html))
- [Interactive Consoles](https://awesome-repositories.com/f/development-tools-productivity/interactive-consoles.md) — Executes code within a managed environment that captures input and output streams through customizable callbacks. ([source](https://pyodide.org/en/stable/usage/api/python-api/console.html))
- [Interactive Notebooks](https://awesome-repositories.com/f/development-tools-productivity/interactive-notebooks.md) — Supports browser-based computational environments for live code execution and literate programming. ([source](https://pyodide.org/en/stable/project/related-projects.html))
- [Virtual Environments](https://awesome-repositories.com/f/development-tools-productivity/virtual-environments.md) — Creates isolated local workspaces to manage project-specific dependencies without global system impact. ([source](https://pyodide.org/en/stable/usage/api/pyodide-cli.html))
- [Synchronous](https://awesome-repositories.com/f/development-tools-productivity/input-output-handlers/synchronous.md) — Performs blocking input and output operations within the browser to ensure compatibility with standard libraries that expect synchronous behavior. ([source](https://pyodide.org/en/stable/project/roadmap.html))
- [Project Lockfile Management](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/project-lockfile-management.md) — Generates and updates dependency lockfiles to ensure consistent package versions and integrity across environments. ([source](https://pyodide.org/en/stable/usage/api/pyodide-cli.html))
- [Event Loop Integrations](https://awesome-repositories.com/f/development-tools-productivity/event-loop-integrations.md) — Yields control to the browser event loop during long-running computations to maintain UI responsiveness.
- [Installation Integrity Verification](https://awesome-repositories.com/f/development-tools-productivity/package-installers/installation-integrity-verification.md) — Validates the authenticity of downloaded packages by comparing file hashes against known records to ensure secure execution. ([source](https://pyodide.org/en/stable/usage/loading-packages.html))
- [Task Interruption Policies](https://awesome-repositories.com/f/development-tools-productivity/process-signal-handlers/task-interruption-handlers/task-interruption-policies.md) — Defines logic to handle interrupt signals and poll for cancellation requests during long-running operations. ([source](https://pyodide.org/en/stable/usage/keyboard-interrupts.html))
- [Standard Stream Interfaces](https://awesome-repositories.com/f/development-tools-productivity/standard-stream-interfaces.md) — Configures custom handlers for standard input, output, and error streams to capture or provide data programmatically. ([source](https://pyodide.org/en/stable/usage/streams.html))

### Data & Databases

- [Interactive Data Science](https://awesome-repositories.com/f/data-databases/interactive-data-science.md) — Enables interactive data analysis and computational notebooks that perform heavy processing locally.
- [Virtualized Filesystem Layers](https://awesome-repositories.com/f/data-databases/storage-abstraction/local-filesystem-storage/virtualized-filesystem-layers.md) — Provides an isolated in-memory virtual filesystem that bridges host and runtime data access. ([source](https://pyodide.org/en/stable/usage/file-system.html))
- [Shared Memory Buffers](https://awesome-repositories.com/f/data-databases/shared-memory-buffers.md) — Enables high-performance data processing by transferring raw memory buffers and typed arrays between language runtimes. ([source](https://pyodide.org/en/stable/usage/type-conversions.html))
- [In-Memory File Systems](https://awesome-repositories.com/f/data-databases/file-management-systems/in-memory-file-systems.md) — Provides a POSIX-compliant file system layer that maps memory buffers to file paths for standard I/O.
- [Persistent Storage Management](https://awesome-repositories.com/f/data-databases/persistent-storage-management.md) — Attaches external filesystem backends to the virtual environment to enable data persistence across sessions. ([source](https://pyodide.org/en/stable/usage/file-system.html))

### Web Development

- [Web APIs](https://awesome-repositories.com/f/web-development/api-management-tools/api-development-management/web-apis.md) — Enables code to manipulate document elements, handle browser events, and access native platform features directly from the execution environment. ([source](https://pyodide.org/en/stable/_sources/index.rst))
- [Full-Stack Web Applications](https://awesome-repositories.com/f/web-development/full-stack-web-applications.md) — Enables full-stack application development by executing business logic and data processing entirely on the client side.
- [Serverless Frameworks](https://awesome-repositories.com/f/web-development/backend-development/web-frameworks/language-specific-ecosystems/python-web-frameworks/serverless-frameworks.md) — Deploys web frameworks and dashboarding tools entirely in the client browser without requiring a backend server. ([source](https://pyodide.org/en/stable/project/related-projects.html))
- [Browser Runtimes](https://awesome-repositories.com/f/web-development/browser-runtimes.md) — Runs code and packages directly within browser environments by bridging synchronous code and asynchronous web APIs. ([source](https://pyodide.org/en/stable/project/related-projects.html))
- [DOM Manipulation](https://awesome-repositories.com/f/web-development/dom-manipulation.md) — Provides methods and interfaces for dynamically updating the structure and content of web pages directly from code. ([source](https://pyodide.org/en/stable/usage/examples.html))
- [Request Interception Middleware](https://awesome-repositories.com/f/web-development/request-interception-middleware.md) — Replaces standard socket-based networking with browser-native fetch capabilities to allow packages to perform HTTP operations. ([source](https://pyodide.org/en/stable/project/roadmap.html))
- [Binary Module Loaders](https://awesome-repositories.com/f/web-development/dynamic-loading-strategies/binary-module-loaders.md) — Resolves and links compiled binary modules at runtime to allow loading of native extensions on demand.
- [Event Loop Managers](https://awesome-repositories.com/f/web-development/event-loop-managers.md) — Coordinates long-running animation or game loops by yielding control to the browser event loop. ([source](https://pyodide.org/en/stable/usage/sdl.html))
- [Server-Side Runtimes](https://awesome-repositories.com/f/web-development/server-side-frameworks/server-side-runtimes.md) — Executes code within server-side environments by integrating the interpreter into applications or command-line sessions. ([source](https://pyodide.org/en/stable/usage/index.html))
- [Background Processing Workers](https://awesome-repositories.com/f/web-development/background-processing-workers.md) — Runs heavy computation in background threads to keep the main application thread responsive. ([source](https://pyodide.org/en/stable/usage/examples.html))

### Part of an Awesome List

- [Language Implementations](https://awesome-repositories.com/f/awesome-lists/devtools/language-implementations.md) — Runs Python in the browser via WebAssembly.

### Networking & Communication

- [Asynchronous Request Handlers](https://awesome-repositories.com/f/networking-communication/asynchronous-request-handlers.md) — Executes non-blocking network calls using a promise-based interface that leverages the native browser networking stack. ([source](https://pyodide.org/en/stable/usage/api/python-api/http.html))

### Software Engineering & Architecture

- [Web Applications](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/reference-apps-and-blueprints/web-applications.md) — Integrates Python logic into web applications to manipulate document elements and access native browser APIs.
- [Exception Handling Strategies](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/exception-logic-structures/exception-handling-strategies.md) — Implements patterns for catching and converting errors across language boundaries to ensure correct exception propagation. ([source](https://pyodide.org/en/stable/usage/type-conversions.html))
- [Execution Control](https://awesome-repositories.com/f/software-engineering-architecture/execution-control.md) — Provides logic gates and tools to manage the flow of program execution and enforce constraints during compilation. ([source](https://pyodide.org/en/stable/usage/api/python-api/code.html))

### DevOps & Infrastructure

- [Component Integrity Verifiers](https://awesome-repositories.com/f/devops-infrastructure/package-metadata/integrity-validators/component-integrity-verifiers.md) — Verifies the integrity and correctness of components and ensures type definitions are accurate and compliant. ([source](https://pyodide.org/en/stable/development/testing.html))

### System Administration & Monitoring

- [Proxy Lifecycle Management](https://awesome-repositories.com/f/system-administration-monitoring/proxy-lifecycle-management.md) — Manages the creation and destruction of proxies for cross-language objects to ensure resources are cleaned up after use. ([source](https://pyodide.org/en/stable/usage/api/python-api/ffi.html))

### User Interface & Experience

- [Vector Graphics Renderers](https://awesome-repositories.com/f/user-interface-experience/vector-graphics-renderers.md) — Configures canvas elements to support libraries requiring graphical output and rendering capabilities. ([source](https://pyodide.org/en/stable/usage/api/js-api.html))
