Web での Python の実行とデバッグ
Web 上で Python コードを実行するための実験的なサポートを発表できることを嬉しく思います。これを試すには、Marketplace から Experimental - Python for the Web 拡張機能の最新プレリリース バージョンをインストールしてください。この作業は、現在開発中の Python の WASM に基づいています。その仕組みと進行状況の詳細については、Compiling Python to WebAssembly (WASM) をお読みください。
前提条件
この拡張機能を使用するには、以下の前提条件が必要です
- GitHub Repositories 拡張機能がインストールされている必要があります。
- GitHub で認証する必要があります。
- クロスオリジン分離をサポートするブラウザーを使用する必要があります。この拡張機能は、Microsoft Edge および Google Chrome ブラウザーでテストされています。
- インサイダー バージョンの VS Code for the Web (例:
https://insiders.vscode.dev/
) を使用する必要があります。 - ソース コードは、ローカル ファイル システム、または GitHub Repositories 拡張機能を通じてアクセスされる GitHub リポジトリのいずれかでホストされている必要があります。
- VS Code for the Web を起動する際、URL の末尾に次のクエリ パラメーターを追加する必要があります:
?vscode-coi=
。
Hello World を実行する
以下のスクリーンショットは、ブラウザーで単純な Python プログラムを実行したものです。このプログラムは、ローカル ファイル システムに保存された app.py
と hello.py
の 2 つのファイルで構成されています。
REPL を開始する
この拡張機能には、統合された Python REPL が付属しています。これを有効にするには、Python WASM: Start REPL コマンドを実行します。
デバッグ
Web 上での Python ファイルのデバッグがサポートされており、VS Code Desktop のデバッグと同じ UI を使用します。現在サポートされている機能は次のとおりです
- ブレークポイントの設定
- 関数のステップインとステップアウト
- モジュール間のデバッグ
- デバッグ コンソールでの変数の評価
- 統合ターミナルでのプログラムのデバッグ
以下のスクリーンショットは、アクティブなデバッグ セッションを示しています。ファイルは、こちらのサンプル リポジトリで GitHub 上に直接ホストされています。
独自の Python 環境を作成する
この拡張機能は、CPython WebAssembly ビルドに基づいた事前構成済みの Python 環境を使用します。使用されるビルドは Python-3.11.0-wasm32-wasi-16.zip
です。
ソース ホイール Python パッケージを含む独自の Python 環境を、以下の手順で作成できます
-
新しい GitHub リポジトリを作成します。
-
cpython-wasm-test/releases から wasm-wasi-16 ビルドをダウンロードし、リポジトリのルートに展開します。
-
ソース ホイール パッケージを追加するには、次の操作を行います
- ルートに
site-packages
フォルダーを作成します。 - 次のコマンドを使用してパッケージをインストールします:
pip install my_package --target ./site-packages
。OS に pip を含む Python がインストールされている必要があることに注意してください。
- ルートに
-
変更をコミットします。
-
python.wasm.runtime
設定を、あなたの GitHub リポジトリを指すように変更します。例:{ "python.wasm.runtime": "https://github.com/dbaeumer/python-3.11.0" }
制限
Python for the Web のサポートは、ソース コードをローカル マシンで実行する場合に利用できるすべての機能を提供するわけではありません。Python インタープリターの主な制限は次のとおりです
- ソケットのサポートなし。
- スレッドのサポートなし。結果として、非同期のサポートもありません。
- pip のサポートなし。
- ネイティブ Python モジュールのサポートなし。
謝辞
この作業は、CPython の必要な WASM ファイルをビルドおよび保守している Python コミュニティのサポートなしでは不可能でした。
フィードバック
Python for the Web 拡張機能の使用中に問題が発生した場合は、vscode-python-web-wasm リポジトリに issue を登録できます。