参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

在 Web 中运行和调试 Python

我们很高兴地宣布,我们为在 Web 上运行 Python 代码提供了实验性支持。要试用此功能,请从 Marketplace 安装最新预发布版本的 Experimental - Python for the Web 扩展。这项工作基于目前仍在开发中的 Python WASM。要了解更多关于其工作原理和当前进展的信息,您可以阅读 将 Python 编译为 WebAssembly (WASM)

先决条件

使用此扩展需要满足以下先决条件:

  • 您需要安装 GitHub Repositories 扩展。
  • 您需要通过 GitHub 进行身份验证。
  • 您需要使用支持跨域隔离的浏览器。该扩展已在 Microsoft Edge 和 Google Chrome 浏览器上进行过测试。
  • 您需要使用 Insider 版本的 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 组成,存储在本地文件系统上。

Execution of Python code stored on a local disk

启动 REPL

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

Start Python Repl

调试

此扩展支持在 Web 上调试 Python 文件,并使用与 VS Code 桌面版调试相同的用户界面。目前支持的功能有:

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

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

Debugging a Python program

创建您自己的 Python 环境

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

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

  • 创建一个新的 GitHub 仓库。

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

  • 要添加源码 wheel 格式的包,请执行以下操作:

    • 在根目录中创建一个 site-packages 文件夹。
    • 使用以下命令安装包:pip install my_package --target ./site-packages。请注意,您的操作系统中需要有包含 pip 的 Python 安装。
  • 提交更改。

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

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

限制

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

  • 不支持套接字 (socket)。
  • 不支持线程。因此,也不支持异步操作。
  • 不支持 pip。
  • 不支持原生的 Python 模块。

致谢

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

反馈

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