在 Web 中运行和调试 Python
我们很高兴地宣布对在 Web 上运行 Python 代码的实验性支持。要进行试用,请从 Marketplace安装最新的预发布版本的Experimental - Python for the Web扩展。这项工作基于 Python 中的 WASM,目前正在开发中。要了解有关其工作原理和持续进展的更多信息,您可以阅读将 Python 编译为 WebAssembly (WASM)。
先决条件
使用该扩展需要满足以下先决条件:
- 您需要安装GitHub 存储库扩展。
- 您需要通过 GitHub 进行身份验证。
- 您需要使用支持跨域隔离的浏览器。该扩展已在 Microsoft Edge 和 Google Chrome 浏览器上进行了测试。
- 您需要使用VS Code for the Web的内部版本(例如
https://insiders.vscode.dev/
) - 您的源代码必须托管在本地文件系统或通过 GitHub存储库扩展访问的 GitHub 存储库上。
- 启动VS Code for the Web时,需要将以下查询参数添加到 URL 末尾:
?vscode-coi=
。
运行你好世界
下面的屏幕截图显示了一个简单的Python程序在浏览器中的执行情况。该程序由两个文件组成app.py
,hello.py
存储在本地文件系统上。
开始 REPL
该扩展附带集成的 Python REPL。要激活它,请运行命令Python WASM: Start REPL。
调试
支持在 Web 上调试 Python 文件,并且它使用与 VS Code 桌面调试相同的 UI 。目前支持的功能有:
- 设置断点
- 进入和退出函数
- 跨模块调试
- 在调试控制台中评估变量
- 在集成终端中调试程序
下面的屏幕截图显示了活动的调试会话。这些文件直接托管在该示例存储库的 GitHub 上。
创建您自己的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" }
局限性
Python for the Web 支持不提供在本地计算机上运行源代码时可用的所有功能。Python 解释器的主要限制是:
- 没有套接字支持。
- 没有线程支持。因此,没有异步支持。
- 没有点支持。
- 不支持本机 Python 模块。
致谢
如果没有 Python 社区的支持,这项工作就不可能完成,他们正在构建和维护 CPython 必要的 WASM 文件。
反馈
如果您在使用 Python for Web 扩展时遇到问题,可以在vscode-python-web-wasm存储库中输入问题。