PyScript上手:把 Python 搬进浏览器,一行 JS 不写
【免费下载链接】pyscriptAn open source platform for Python in the browser. https://pyscript.net Docs: https://docs.pyscript.net/ Try it: https://pyscript.com/ Community: https://discord.gg/HxvBtukrg2项目地址: https://gitcode.com/gh_mirrors/py/pyscript
想让 Python 直接在浏览器里跑,不用搭服务器、不用写一行 JavaScript?PyScript 靠 WebAssembly 把解释器直接塞进网页:HTML 里加一个标签,Python 就能在你的页面上执行。
没有后端,PyScript 替你扛下了什么
以前想在网页上跑 Python,你得自己搭一套:一个 Python 后端进程负责执行代码,一堆 JavaScript 负责传参、回调、刷新页面,前端同学还得学一套胶水代码。PyScript 的路数完全不同——它基于 WASM,在浏览器里直接拉起 Python 解释器,页面本身就是一个"服务器"。
- 后端归零:一个 HTML 文件就是全部
- 全程不写 JavaScript
- 浏览器 API 都有 Python 味封装
- 桌面、手机,WASM 到哪它到哪
3 步跑通一个真实场景:温度小工具
别急着看功能清单,直接走一遍:做一个"点一下按钮,拉一次温度数据,顺手记住你选的城市"的小工具。整个 Python 逻辑只写在一个script标签里,type="mpy"声明用轻量解释器:
<script type="mpy"> from pyscript import web, when, fetch, storage store = await storage("my-app") async def update(): city = store.get("city", "Beijing") res = await fetch(f"https://example.com/api/temp?city={city}") data = await res.json() web.page["temp"].textContent = f"{data['temp']} ℃" web.page.body.append( web.button("刷新温度", when("click", update), id="btn") ) </script>这段在干嘛:storage是浏览器里一个字典样式的本地存储,fetch发 HTTP 请求并拿到原生 Python 的 dict,when("click", ...)把一个普通 Python 函数挂到按钮的点击事件上——web模块顺手把按钮创建、追加到页面都包了。没有addEventListener,没有 JSON 字符串手工解析。
再往深走一步,想让数据带格式?pyscript.display支持_repr_html_这类富渲染协议:对象只要实现_repr_html_方法返回一段 HTML,display(obj)就会按富文本渲染,而不是干巴巴的repr。
容易被忽略的几个细节
两套解释器,选错会卡住你
type="mpy"走 MicroPython,启动快、体积小,但第三方库基本用不了;要 import pandas、matplotlib,必须换成type="py",背后是 Pyodide 编译的完整 CPython,代价是更大的下载和初始化时间。轻量交互选 mpy,数据分析选 py,别混着期望。
配置文件比你想的灵活
<script>标签上挂个config="conf.toml",TOML 里files字段可以映射外部.py模块,plugins字段能按名字增删插件——源码里plugins = ["!error"]这种写法就是关掉内置错误提示。多页面项目不用把逻辑全糊在一个标签里。
存储是自动持久化的,但有一步别省
pyscript.storage把 IndexedDB 封装成 dict,改动会自动排队写入,按域名隔离、关浏览器也不丢。不过想立刻落盘(比如页面马上可能被关闭),显式await store.sync()一下更稳妥。
适合谁,不适合谁
| 适合 | 不适合 |
|---|---|
| 交互式教学、课堂演示,零安装 | 实时推送、毫秒级响应的业务系统 |
| 内部小工具:表单、报表、配置查看器 | 大数据集处理(内存全在浏览器里) |
| 把数据探索 demo 直接发给别人看 | 需要登录态、复杂权限的服务端应用 |
| 单文件分发、内网/离线环境 | 指望它替代后端做生产服务 |
另外提醒:WASM 沙箱意味着它够安全,但也意味着它真的只是一个"跑在页面上的解释器",网络请求照样受目标 API 的 CORS 限制,别让浏览器替你背锅。
核心 stdlib 在core/src/stdlib/pyscript/,每个模块的 docstring 就是最细的用法手册。下一步直接翻core/tests/目录里的 HTML,那都是能打开就跑的完整示例,比任何教程都诚实。
【免费下载链接】pyscriptAn open source platform for Python in the browser. https://pyscript.net Docs: https://docs.pyscript.net/ Try it: https://pyscript.com/ Community: https://discord.gg/HxvBtukrg2项目地址: https://gitcode.com/gh_mirrors/py/pyscript
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考