现已发布!阅读十月发布的新功能和修复。

在 Web 上运行和调试 Python

我们很高兴宣布实验性支持在 Web 上运行 Python 代码。要试用它,请从市场安装 实验性 - 适用于 Web 的 Python 扩展的最新预发布版本。这项工作基于 Python 中的 WASM,该项目目前正在开发中。要了解有关其工作原理和持续进展的更多信息,您可以阅读 将 Python 编译为 WebAssembly (WASM)

先决条件

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

  • 您需要安装 GitHub 存储库 扩展。
  • 您需要通过 GitHub 进行身份验证。
  • 您需要使用支持 跨源隔离 的浏览器。此扩展已在 Microsoft Edge 和 Google Chrome 浏览器中经过测试。
  • 您需要使用 适用于 Web 的 VS Code 的内部版本(例如 https://insiders.vscode.dev/
  • 您的源代码必须托管在本地文件系统或通过 GitHub 存储库 扩展访问的 GitHub 存储库中。
  • 启动 适用于 Web 的 VS Code 时,您需要在 URL 末尾添加以下查询参数:?vscode-coi=

运行 Hello World

下面的屏幕截图显示了在浏览器中执行简单的 Python 程序。该程序包含两个文件 app.pyhello.py,存储在本地文件系统中。

Execution of Python code stored on a local disk

启动 REPL

此扩展附带一个集成的 Python REPL。要激活它,请运行命令Python WASM:启动 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。请注意,您需要在您的操作系统中安装 Python(包括 pip)。
  • 提交更改。

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

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

限制

适用于 Web 的 Python 支持未提供在本地计算机上运行源代码时可用的所有功能。Python 解释器中的主要限制包括

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

致谢

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

反馈

如果您在使用适用于 Web 的 Python 扩展时遇到问题,您可以在 vscode-python-web-wasm 存储库中提交问题。