Web上でPythonを実行およびデバッグする
Web上でPythonコードを実行するための実験的なサポートを発表できることを嬉しく思います。お試しいただくには、マーケットプレースからExperimental - Python for the Web拡張機能の最新のプレリリースバージョンをインストールしてください。この作業は、現在開発中のPythonにおけるWASMに基づいています。その仕組みと進行中の進捗状況について詳しく知るには、Compiling Python to WebAssembly (WASM)をお読みください。
前提条件
この拡張機能を使用するには、以下の前提条件が必要です
- GitHub Repositories拡張機能がインストールされている必要があります。
- GitHubで認証する必要があります。
- クロスオリジン分離をサポートするブラウザを使用する必要があります。この拡張機能は、Microsoft EdgeおよびGoogle Chromeブラウザでテストされています。
- Web版VS CodeのInsiderバージョンを使用する必要があります(例:
https://insiders.vscode.dev/
) - ソースコードは、ローカルファイルシステム上、またはGitHub Repositories拡張機能を通じてアクセスされるGitHubリポジトリにホストされている必要があります。
- Web版VS Codeを起動する際、URLの末尾に次のクエリパラメータを追加する必要があります:
?vscode-coi=
。
Hello World を実行する
以下のスクリーンショットは、ブラウザでのシンプルなPythonプログラムの実行を示しています。このプログラムは、ローカルファイルシステムに保存されているapp.py
とhello.py
の2つのファイルで構成されています。
REPL を開始する
この拡張機能には、統合されたPython REPLが付属しています。これをアクティブにするには、コマンドPython WASM: Start REPL を実行します。
デバッグ
Web上での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
。pipを含むPythonがOSにインストールされている必要があることに注意してください。
- ルートに
-
変更をコミットします。
-
python.wasm.runtime
設定をGitHubリポジトリを指すように変更します。例:{ "python.wasm.runtime": "https://github.com/dbaeumer/python-3.11.0" }
制限
Web版Pythonのサポートは、ローカルマシンでソースコードを実行する際に利用できるすべての機能を提供するものではありません。Pythonインタープリターの主な制限は次のとおりです
- ソケットのサポートなし。
- スレッドのサポートなし。その結果、非同期のサポートもありません。
- pipのサポートなし。
- ネイティブPythonモジュールのサポートなし。
謝辞
この作業は、CPythonの必要なWASMファイルを構築・維持しているPythonコミュニティのサポートなくしては不可能でした。
フィードバック
Python for the Web拡張機能の使用中に問題が発生した場合は、vscode-python-web-wasmリポジトリに問題を報告できます。