Entdecken Sie agentenbasierte Entwicklung –

Python im Web ausführen und debuggen

Wir freuen uns, experimentelle Unterstützung für das Ausführen von Python-Code im Web ankündigen zu können. Um dies auszuprobieren, installieren Sie die neueste Vorabversion der Erweiterung Experimental - Python for the Web aus dem Marketplace. Diese Arbeit basiert auf WASM in Python, das sich derzeit in der Entwicklung befindet. Um mehr über die Funktionsweise und den aktuellen Fortschritt zu erfahren, können Sie den Artikel Compiling Python to WebAssembly (WASM) lesen.

Voraussetzungen

Die folgenden Voraussetzungen müssen erfüllt sein, um die Erweiterung zu nutzen

  • Sie müssen die Erweiterung GitHub Repositories installiert haben.
  • Sie müssen sich bei GitHub authentifizieren.
  • Sie müssen einen Browser verwenden, der Cross-Origin-Isolation unterstützt. Die Erweiterung wurde mit den Browsern Microsoft Edge und Google Chrome getestet.
  • Sie müssen die Insider-Version von VS Code for the Web verwenden (zum Beispiel https://insiders.vscode.dev/)
  • Ihr Quellcode muss entweder auf Ihrem lokalen Dateisystem oder in einem GitHub-Repository gehostet sein, auf das über die Erweiterung GitHub Repositories zugegriffen wird.
  • Beim Starten von VS Code for the Web müssen Sie den folgenden Abfrageparameter an das Ende der URL anhängen: ?vscode-coi=.

Hello World ausführen

Der folgende Screenshot zeigt die Ausführung eines einfachen Python-Programms im Browser. Das Programm besteht aus zwei Dateien, app.py und hello.py, die auf dem lokalen Dateisystem gespeichert sind.

Execution of Python code stored on a local disk

Eine REPL starten

Die Erweiterung enthält eine integrierte Python-REPL. Um sie zu aktivieren, führen Sie den Befehl Python WASM: Start REPL aus.

Start Python Repl

Debugging

Es gibt Unterstützung für das Debuggen von Python-Dateien im Web, wobei dieselbe Benutzeroberfläche wie beim Debugging in VS Code Desktop verwendet wird. Die derzeit unterstützten Funktionen sind:

  • Haltepunkte (Breakpoints) setzen
  • In Funktionen hinein- und aus ihnen herausspringen (Step into/out)
  • Modulübergreifendes Debuggen
  • Auswerten von Variablen in der Debug-Konsole
  • Debuggen des Programms im integrierten Terminal

Der folgende Screenshot zeigt eine aktive Debug-Sitzung. Die Dateien werden direkt auf GitHub in diesem Beispiel-Repository gehostet.

Debugging a Python program

Eigene Python-Umgebung erstellen

Die Erweiterung verwendet eine vorkonfigurierte Python-Umgebung, die auf den CPython WebAssembly-Builds basiert. Der verwendete Build ist Python-3.11.0-wasm32-wasi-16.zip.

Sie können Ihre eigene Python-Umgebung erstellen, einschließlich Source-Wheel-Python-Paketen, indem Sie diese Schritte befolgen:

  • Erstellen Sie ein neues GitHub-Repository.

  • Laden Sie einen wasm-wasi-16-Build von cpython-wasm-test/releases herunter und entpacken Sie ihn im Stammverzeichnis des Repositorys.

  • Um Source-Wheel-Pakete hinzuzufügen, gehen Sie wie folgt vor:

    • Erstellen Sie einen site-packages-Ordner im Stammverzeichnis.
    • Installieren Sie das Paket mit dem folgenden Befehl: pip install my_package --target ./site-packages. Beachten Sie, dass Sie eine Python-Installation inklusive pip auf Ihrem Betriebssystem benötigen.
  • Führen Sie einen Commit der Änderungen durch.

  • Ändern Sie die Einstellung python.wasm.runtime, sodass sie auf Ihr GitHub-Repository verweist. Zum Beispiel:

    {
      "python.wasm.runtime": "https://github.com/dbaeumer/python-3.11.0"
    }
    

Einschränkungen

Die Unterstützung für Python im Web bietet nicht alle Funktionen, die beim Ausführen von Quellcode auf Ihrem lokalen Computer verfügbar sind. Die wesentlichen Einschränkungen des Python-Interpreters sind:

  • Keine Socket-Unterstützung.
  • Keine Thread-Unterstützung. Infolgedessen gibt es keine Unterstützung für async.
  • Keine pip-Unterstützung.
  • Keine Unterstützung für native Python-Module.

Danksagung

Diese Arbeit wäre ohne die Unterstützung der Python-Community nicht möglich gewesen, welche die notwendigen WASM-Dateien von CPython erstellt und pflegt.

Feedback

Wenn Sie bei der Nutzung der „Python for the Web“-Erweiterung auf Probleme stoßen, können Sie diese im vscode-python-web-wasm-Repository melden.

© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.