在网页上运行和调试Python

我们很高兴地宣布实验性支持在Web上运行Python代码。要尝试它,请从市场安装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.pyhello.py组成。

执行存储在本地磁盘上的Python代码

启动一个REPL

该扩展附带了一个集成的Python REPL。要激活它,请运行命令Python WASM: Start REPL

启动Python Repl

调试

支持在Web上调试Python文件,并且使用与VS Code桌面版相同的UI进行调试。目前支持的功能包括:

  • 设置断点
  • 进入和退出函数
  • 跨模块调试
  • 在调试控制台中评估变量
  • 在集成终端中调试程序

下面的截图显示了一个活动的调试会话。文件直接托管在GitHub上的这个示例仓库中。

调试Python程序

创建你自己的Python环境

该扩展使用了一个基于CPython WebAssembly构建的预配置Python环境。使用的构建是Python-3.11.0-wasm32-wasi-16.zip

您可以按照以下步骤创建自己的Python环境,包括源轮Python包:

  • 创建一个新的 GitHub 仓库。

  • cpython-wasm-test/releases下载一个wasm-wasi-16构建,并将其解压到仓库的根目录中。

  • 要添加源轮包,请执行以下操作:

    • Create a site-packages folder in the root.
    • Install the package using the following command pip install my_package --target ./site-packages. Note that you need to have a Python installation in your OS including pip.
  • 提交更改。

  • python.wasm.runtime 设置更改为指向您的 GitHub 仓库。例如:

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

限制

Python 的 Web 支持并不提供在本地机器上运行源代码时的所有功能。Python 解释器的主要限制是:

  • 不支持套接字。
  • 不支持线程。因此,也没有异步支持。
  • 不支持pip。
  • 不支持原生Python模块。

致谢

如果没有Python社区的支持,这项工作是不可能完成的,他们正在构建和维护CPython的必要WASM文件。

反馈

如果您在使用Python for the Web扩展时遇到问题,可以在vscode-python-web-wasm仓库中提交问题。