ウェブで Python を実行およびデバッグする
ウェブ上で Python コードを実行するための実験的サポートを発表できることを嬉しく思います。試してみるには、マーケットプレイスから最新のプレリリース版の Experimental - Python for the Web 拡張機能をインストールしてください。この作業は、現在開発中の Python の WASM に基づいています。その仕組みと進行中の進捗状況の詳細については、Python の WebAssembly (WASM) へのコンパイル を参照してください。
前提条件
拡張機能を使用するには、次の前提条件が必要です
- GitHub Repositories 拡張機能がインストールされている必要があります。
- GitHub で認証する必要があります。
- クロスオリジン分離 をサポートするブラウザを使用する必要があります。この拡張機能は、Microsoft Edge および Google Chrome ブラウザでテストされています。
- VS Code for the Web の Insider バージョン (例:
https://insiders.vscode.dev/
) を使用する必要があります - ソースコードは、ローカルファイルシステムまたは GitHub Repositories 拡張機能を通じてアクセスされる GitHub リポジトリのいずれかでホストされている必要があります。
- VS Code for the Web を起動するときは、URL の最後に次のクエリパラメータを追加する必要があります:
?vscode-coi=
。
Hello World の実行
以下のスクリーンショットは、ブラウザでの簡単な Python プログラムの実行を示しています。プログラムは、ローカルファイルシステムに保存された 2 つのファイル app.py
と hello.py
で構成されています。
REPL の開始
拡張機能には、統合された Python REPL が付属しています。アクティブにするには、コマンド Python WASM: REPL を開始 を実行します。
デバッグ
ウェブ上の Python ファイルのデバッグがサポートされており、VS Code デスクトップ デバッグ と同じ 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 リポジトリに問題を登録できます。