This release is a pre-release and may not be stable for production use.
BETA: everything is subject to change
pygodide turns Pygame projects into browser apps using Pyodide with one command, no edits to your source code, and acheiving 2.4x more fps than pygbag.
Pronounced "pie-go-died"
If anything doesn't work out-of-the-box, pygodide offers tons of configuration options to adapt to your needs.
Documentation: https://elan456.github.io/pygodide/
Quick Start
While in your project's root directory, run the following commands:
Install
# Or add to your pyproject.toml and `uv sync`
pip install pygodide
Build
# Produces the web-hostable build/ directory
pygodide build .
# For an Itch.io zip file
pygodide build . --zip
Serve
# Hosts the build/ directory locally
pygodide serve .
Open http://localhost:8000 in your browser.
Troubleshooting
If anything went wrong, head over to the instructions page for more details and troubleshooting guidance.
Examples and Live Demos
Sample projects live under
test_targets/ and a few of them are uploaded to itch.io.
Numpy particles demo: https://elan456.itch.io/pygodide-test-project
Audio demo: https://elan456.itch.io/pygodide-audio-demo
Arcade performance benchmark: https://elan456.itch.io/pygodide-performance-benchmark
Try one locally:
pygodide build test_targets/ball_bouncing
pygodide serve test_targets/ball_bouncing
Before every release, each target under test_targets/ is automatically verified using a headless browser to catch regressions. All features shown in the test targets are maintained as first-class features.
Contributing
git clone https://github.com/Elan456/pygodide.git
cd pygodide
uv sync --dev
uv run playwright install chromium
uv run pre-commit install --hook-type pre-commit --hook-type pre-push
The dev group includes pygodide[smoke], so Playwright is installed with
uv sync --dev. You still need playwright install chromium once for browser
binaries.
Run the same checks as CI:
uv run ruff format --check .
uv run ruff check .
uv run pytest
Smoke tests (from this repo)
uv run playwright install chromium # once
uv run pygodide smoke /path/to/your/pygame/project
uv run pygodide smoke test_targets --suite
Be sure to read the AGENTS.md it's written for both human contributors as well as AI tools.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygodide-0.1.0b7.tar.gz.
File metadata
- Download URL: pygodide-0.1.0b7.tar.gz
- Upload date:
- Size: 402.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ae0b269ec684744e736c4691bc912df341fb705b148ae8fd83339d813bbf2c3
|
|
| MD5 |
6dc6d26f3b30ba5aa2647a988b383f48
|
|
| BLAKE2b-256 |
a0cbb3f38a50d7ea1a1026fa31e2a45b0eedd2253e8f9e006e438928a37df83f
|
Provenance
The following attestation bundles were made for pygodide-0.1.0b7.tar.gz:
Publisher:
publish.yml on Elan456/pygodide
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pygodide-0.1.0b7.tar.gz -
Subject digest:
3ae0b269ec684744e736c4691bc912df341fb705b148ae8fd83339d813bbf2c3 - Sigstore transparency entry: 2158056546
- Sigstore integration time:
-
Permalink:
Elan456/pygodide@3eb752ea9f1fb7c8e416e983688081192ad939ab -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Elan456
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3eb752ea9f1fb7c8e416e983688081192ad939ab -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pygodide-0.1.0b7-py3-none-any.whl.
File metadata
- Download URL: pygodide-0.1.0b7-py3-none-any.whl
- Upload date:
- Size: 49.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9329216b7455c201b32787adaef1f794d150a371c83c6aa256e05b12bae9596
|
|
| MD5 |
ffd9ee752f65565767f8cfdc13844311
|
|
| BLAKE2b-256 |
9220ba0607cbbbf34994adef8da2d848c213ab30f543f5c4ce987f2d8589ca08
|
Provenance
The following attestation bundles were made for pygodide-0.1.0b7-py3-none-any.whl:
Publisher:
publish.yml on Elan456/pygodide
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pygodide-0.1.0b7-py3-none-any.whl -
Subject digest:
e9329216b7455c201b32787adaef1f794d150a371c83c6aa256e05b12bae9596 - Sigstore transparency entry: 2158056567
- Sigstore integration time:
-
Permalink:
Elan456/pygodide@3eb752ea9f1fb7c8e416e983688081192ad939ab -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Elan456
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3eb752ea9f1fb7c8e416e983688081192ad939ab -
Trigger Event:
workflow_dispatch
-
Statement type: