在网页上运行和调试Python
我们很高兴地宣布实验性支持在Web上运行Python代码。要尝试它,请从市场安装Experimental - Python for the Web扩展的最新预发布版本。这项工作基于Python中的WASM,目前正在开发中。要了解更多关于它的工作原理和正在进行中的进展,您可以阅读Compiling Python to WebAssembly (WASM)。
先决条件
使用该扩展需要以下先决条件:
- 你需要安装GitHub Repositories扩展。
- 您需要使用GitHub进行身份验证。
- 您需要使用支持跨源隔离的浏览器。该扩展已在Microsoft Edge和Google Chrome浏览器中进行了测试。
- 您需要使用VS Code for the Web的内部版本(例如
https://insiders.vscode.dev/
) - 您的源代码必须托管在本地文件系统上或通过GitHub Repositories扩展访问的GitHub仓库中。
- 启动VS Code for the Web时,您需要在URL末尾添加以下查询参数:
?vscode-coi=
。
运行 Hello World
下面的截图显示了在浏览器中执行一个简单的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构建,并将其解压到仓库的根目录中。
-
要添加源轮包,请执行以下操作:
- Create a
site-packages
folder in the root. - Install the package using the following command
pip install my_package --target ./site-packages
. Note that you need to have a Python installation in your OS including pip.
- Create a
-
提交更改。
-
将
python.wasm.runtime
设置更改为指向您的 GitHub 仓库。例如:{ "python.wasm.runtime": "https://github.com/dbaeumer/python-3.11.0" }
限制
Python 的 Web 支持并不提供在本地机器上运行源代码时的所有功能。Python 解释器的主要限制是:
- 不支持套接字。
- 不支持线程。因此,也没有异步支持。
- 不支持pip。
- 不支持原生Python模块。
致谢
如果没有Python社区的支持,这项工作是不可能完成的,他们正在构建和维护CPython的必要WASM文件。
反馈
如果您在使用Python for the Web扩展时遇到问题,可以在vscode-python-web-wasm仓库中提交问题。