跳转至

Pyth-on-line

Reactive & Interactive programming with Pyodide.

在浏览器里跑 Python,这事儿 Pyodide 早就做到了。但我想要的更多——一个真正可交互的 Python 环境,能分享代码片段,能悬停查看变量值,代码改了还能热重载。于是就有了这个项目。

promplate/pyth-on-line py3.online About

No install, just code

打开浏览器,写 Python,分享链接。NumPy、Pandas、SciPy 都能用。

What It Does

Pythonline 把 Pyodide(WASM 编译的 CPython)包装成一个顺手的在线 IDE:

  • 实时执行代码,支持 top-level await
  • 悬停变量名可以预览值(math.pi[1, 2, 3] 这些都行)
  • 原生的 traceback 展示
  • 可以直接 from js import navigator 访问浏览器 API
  • pyodide.http.pyfetch 发网络请求
from asyncio import sleep

for i in range(10):
    print(i, end=" ")
    await sleep(0.1)

是的,顶层 await 直接用。

Tech Stack

前端用的 Svelte,搭配 UnoCSS。编辑器是 Monaco(就是 VS Code 用的那个)。代码高亮用 Shiki

后端?其实没有传统意义上的后端——代码全在浏览器执行。但我确实做了些服务端渲染的优化,以及一个 OG 图片生成服务。

最有意思的是,这个项目里孵化出了 HMR 这个库。一开始只是想让开发体验更好(改代码不用刷新页面),后来发现这套反应式系统很好用,就独立出来了。

My Clever Bits

  • 变量预览:解析代码里的字面量和表达式,悬停时 eval 并展示结果。看起来简单,但要处理各种边界情况
  • HMR 集成:改代码时,只重新执行受影响的部分。这在 notebook 场景下特别有用——不用从头跑一遍
  • llms.txt / MCP:给 AI 准备的文档格式,让 Cursor、Claude 这些工具能直接查项目文档

Features

  • Pyodide 0.29,支持 Python 标准库和众多科学计算库
  • 代码片段通过 URL hash 分享,无需后端存储
  • 深色/浅色主题切换
  • 移动端也能用

Inspirations

这个项目深受 StackBlitzCodePen 的启发——它们让前端开发变得如此便捷,我想给 Python 也做一个。