VS Codeのエージェントモードを拡張するには、を試してください!

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.pyhello.pyの2つのファイルで構成されています。

Execution of Python code stored on a local disk

REPL を開始する

この拡張機能には、統合されたPython REPLが付属しています。これをアクティブにするには、コマンドPython WASM: Start REPL を実行します。

Start Python Repl

デバッグ

Web上でのPythonファイルのデバッグがサポートされており、VS Codeデスクトップデバッグと同じUIを使用します。現在サポートされている機能は以下の通りです

  • ブレークポイントの設定
  • 関数のステップインとステップアウト
  • モジュール間のデバッグ
  • デバッグコンソールでの変数の評価
  • 統合ターミナルでのプログラムのデバッグ

以下のスクリーンショットは、アクティブなデバッグセッションを示しています。ファイルはこのサンプルリポジトリのGitHubで直接ホストされています。

Debugging a Python program

独自の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リポジトリに問題を報告できます。