はじめに
ぐへへ nikkieです🤪
PyCon mini Shizuoka 2024 continueで非常に気になったのがPyodide1。
ドキュメントに沿って素振りしていきます!
目次
Pyodideの「Getting started」
Complete exampleを写経しました。
index.htmlをGitHub PagesでWebに公開しています。
https://ftnext.github.io/pyodide-practice/index.html
開発者ツールからコンソールを見ると(※私はFirefoxを使っています)

PyodideをJavaScriptから使えるようにする読み込み
<script src="https://cdn.jsdelivr.net/pyodide/v0.27.2/full/pyodide.js"></script>
loadPyodide()2して、Pythonコード(文字列)を渡して実行できます(コードは抜粋版です)
async function main() { let pyodide = await loadPyodide(); console.log(pyodide.runPython(` import sys sys.version `)); pyodide.runPython('print(f"{1+2=}")'); } main();
ブラウザのコンソールへの出力方法
PyPIからパッケージをインストールする
Pythonだけで実装されたパッケージ(Pure Python。C拡張のようなコンパイルしたコードを含まない)は、PyPIからPyodide環境にインストールできるんです!
https://pyodide.org/en/stable/usage/loading-packages.html#installing-packages
自作パッケージemi-re4をPyPIからインストールしてPyodideで動かす例5
https://ftnext.github.io/pyodide-practice/install-packages.html

抜粋したコード
async function main() { let pyodide = await loadPyodide(); await pyodide.loadPackage("micropip"); const micropip = pyodide.pyimport("micropip"); await micropip.install("emi-re"); pyodide.runPython(` import emire print(emire.remove_spaces("Algorithm C ないしは アルゴリズム C")) `); } main();
micropipでPyodide環境にパッケージをインストールできると知りました!
Basic Usage — micropip 0.9.0 documentation
Pure Python packagesはPyPIからインストールできます!
JavaScriptコードでmicropipにアクセスするには
これでmicropip.install("パッケージ名")できるようになります。
emi-reのREADMEにある、日本語テキストから空白を除く例を動かしました。
https://pypi.org/project/emi-re/
終わりに
PyCon mini Shizuoka 2024 continueで触発されてPyodideを触りました。
micropipの使い方は完全に理解したので、PyPIにあるPure Pythonパッケージを使いたい放題です。
「俺には、60万のプロジェクトがある!(ドン!!)」8
2つのHTMLファイルの全体はこちらから確認できます
Webブラウザ(WASM)という新たなPython環境(遊び場)を手に入れたことに興奮収まりません!
次はDOMの操作ですかね
pyodide(のmicropip)でPyPIのパッケージをインストールして動かしてみて、「WASMはLinuxコンテナの代替」がこれまでより少しだけ実感を伴ったような。
— nikkie(にっきー) / にっP (@ftnext) 2025年2月9日
nikkieは新しい遊び場を手に入れたぜ、ひゃっはーhttps://t.co/znxgytY3Ef
-
聞いたことあるくらいだったんですが、静岡の複数のトークで出会ったんですよ!
↩帰り道! #pyconshizu の自分用お土産としてはPyodide
— nikkie(にっきー) / にっP (@ftnext) 2025年2月9日
ブラウザがPython環境になる!
micropipでPyPIからもインストールできるらしく、これはワクワクが止まりません!https://t.co/m2oBQm9QUS - https://pyodide.org/en/stable/usage/api/js-api.html#globalThis.loadPyodide↩
-
CPython処理系と異なり、最後の文が式であれば式の値が返るとのことです。 https://pyodide.org/en/stable/usage/api/js-api.html#pyodide.runPython だから
sys.versionの文字列が返っているのですね↩ - 捧ぐッ...! ↩
- 画像は、ドキュメントにあるsnowballstemmerの例も含めた実行結果です。↩
- https://pyodide.org/en/stable/usage/api/js-api.html#pyodide.loadPackage↩
- importしたモジュールを返す! https://pyodide.org/en/stable/usage/api/js-api.html#pyodide.pyimport↩
- PyPIのトップで確認できるプロジェクトの数です。マジレスするとPure Pythonなものはもっと減るでしょう↩