在 Web 中运行和调试 Python
我们很高兴地宣布,实验性支持在 Web 上运行 Python 代码。要尝试此功能,请从 Marketplace 安装最新的 Experimental - Python for the Web 扩展的预发布版本。此工作基于 Python 中的 WASM,目前正在开发中。要了解有关其工作原理和当前进展的更多信息,您可以阅读 将 Python 编译为 WebAssembly (WASM)。
先决条件
使用此扩展需要满足以下先决条件
- 您需要安装 GitHub Repositories 扩展。
- 您需要通过 GitHub 进行身份验证。
- 您需要使用支持 跨源隔离的浏览器。该扩展已在 Microsoft Edge 和 Google Chrome 浏览器中进行了测试。
- 您需要使用 Web 版 VS Code 的内部人员版本(例如
https://insiders.vscode.dev/
) - 您的源代码必须托管在本地文件系统上,或托管在可通过 GitHub Repositories 扩展访问的 GitHub 存储库中。
- 启动 Web 版 VS Code 时,需要在 URL 的末尾添加以下查询参数:
?vscode-coi=
。
运行 Hello World
下面的屏幕截图显示了在浏览器中执行的简单 Python 程序。该程序由存储在本地文件系统上的两个文件 app.py
和 hello.py
组成。
启动 REPL
该扩展带有集成的 Python REPL。要激活它,请运行命令 Python WASM: 启动 REPL。
调试
支持在 Web 上调试 Python 文件,它使用与 VS Code Desktop 调试相同的 UI。当前支持的功能是
- 设置断点
- 步入和步出函数
- 跨模块调试
- 在“调试控制台”中评估变量
- 在集成终端中调试程序
下面的屏幕截图显示了一个活动的调试会话。这些文件直接托管在此 示例存储库上的 GitHub 上。
创建自己的 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
安装包。请注意,您需要在您的操作系统中安装 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 存储库中提交问题。