在网络中运行和调试 Python
我们很高兴宣布,已对在网络上运行Python代码进行了实验性支持。要试用,可以安装市场上最新的Experimental - Python for the Web扩展预发布版。这项工作基于目前正在开发中的Python中的WASM。想了解更多其工作原理及进展,可以阅读《编译Python到WebAssembly(WASM)》。
前提条件
使用该扩展需要满足以下前提条件:
- 你需要安装GitHub Repositories扩展。
- 你需要用GitHub认证。
- 你需要使用支持跨源隔离的浏览器。该扩展已在 Microsoft Edge 和 Google Chrome 浏览器中进行了测试。
- 你需要使用内部版本的 VS Code 进行网页版(例如)
https://insiders.vscode.dev/) - 你的源代码必须托管在本地文件系统或通过GitHub仓库扩展访问的GitHub仓库中。
- 启动 VS Code for the Web 时,你需要在 URL 末尾添加以下查询参数:
?vscode-coi=.
跑你好世界
下面的截图展示了浏览器中一个简单 Python 程序的执行过程。该程序由两个文件组成app.py以及hello.py存储在本地文件系统中。

启动REPL
该扩展自带集成了 Python REPL。要激活它,请执行命令 Python WASM:启动 REPL。

调试
网页版支持调试 Python 文件,界面与 VS Code 桌面调试相同。目前支持的功能包括:
- 设置断点
- 进出功能
- 跨模块调试
- 在调试控制台中评估变量
- 在集成终端中调试程序
下面的截图显示了一个正在进行的调试会话。这些文件直接托管在这个示例仓库的GitHub上。

创建您自己的Python环境
该扩展使用基于 CPython WebAssembly 构建的预配置 Python 环境。所用的构建是Python-3.11.0-wasm32-wasi-16.zip.
你可以按照以下步骤创建自己的 Python 环境,包括源轮 Python 包:
-
创建一个新的GitHub仓库。
-
从 cpython-wasm-test/releases 下载 wasm-wasi-16 构建,并将其扩展到仓库的根节点。
-
要添加源轮包,请执行以下作:
- 创建一个
站点包根目录中的文件夹。 - 使用以下命令安装该包
PIP 安装 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 解释器的主要局限性有:
- 没有插槽支持。
- 没有线程支持。因此,没有异步支持。
- 没有PIP支持。
- 不支持原生Python模块。
致谢
没有Python社区的支持,这项工作无法完成,他们正在构建和维护CPython所需的WASM文件。
反馈
如果你在使用 Python for the Web 扩展时遇到问题,可以在 vscode-python-web-wasm 仓库中输入问题。