PyScript 语言:在浏览器中直接运行 Python

发布: (2026年2月15日 GMT+8 02:43)
6 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I’ll need the full text of the post (the portions you want translated). Could you please paste the article’s content here? Once I have it, I’ll provide a Simplified‑Chinese translation while preserving the source link, formatting, markdown, and any code blocks or URLs unchanged.

什么是 PyScript?

PyScript 是一个框架,使 Python 能够在浏览器中运行,利用现代网页技术。它允许开发者编写与 DOM 交互、处理数据和渲染 UI 的 Python 代码——无需编写 JavaScript。

Anaconda 构建和维护,Anaconda 同时也是流行的 Python 发行版和数据科学生态系统的背后组织。

为什么 PyScript 存在

在 PyScript 之前,在网页上运行 Python 意味着:

  • 编写后端 API(Flask / Django / FastAPI)
  • 使用 JavaScript 框架进行前端逻辑
  • 通过 API 在 Python 与 JavaScript 之间进行桥接

PyScript 通过实现 客户端 Python 执行 消除了这种分离,从而解锁了:

  • 以 Python 为首的 Web 应用
  • 基于浏览器的数据科学和可视化
  • 教育性和交互式的 Python 内容
  • 无需后端基础设施的快速原型开发

PyScript 工作原理(内部实现)

PyScript 依赖 WebAssembly(Wasm) 在浏览器中高效执行 Python。

核心组件

  1. WebAssembly 运行时

    • 使用 Pyodide 将 Python 编译为 WebAssembly。
    • 在安全的浏览器沙箱中运行。
  2. Pyodide

    • 为 Web 编译的 Python 发行版。
    • 包含 NumPy、Pandas、Matplotlib 等库。
  3. HTML 集成

    • 自定义 HTML 标签(<py-script><py-config>)实现 Python 执行。
    • Python 可以直接操作 DOM 元素。

基本 PyScript 示例

最小化 HTML + Python

print("Hello from Python running in the browser!")

无需构建工具。无需后端。无需 JavaScript。

使用 Python 访问 DOM

Submit

from js import document

def greet(event):
    name = document.getElementById("name").value
    document.getElementById("output").innerText = f"Hello, {name}"

document.getElementById("btn").addEventListener("click", greet)

这与 JavaScript 的 DOM 操作相同,只是全部使用 Python 编写。

在 PyScript 中安装 Python 包

packages = ["numpy", "pandas"]

import numpy as np
import pandas as pd

print(np.array([1, 2, 3]) * 10)

多亏了 Pyodide,许多科学库开箱即用。

浏览器中的数据科学

PyScript 最强的优势之一是 客户端数据科学

Pandas 示例

import pandas as pd

data = {
    "Language": ["Python", "JavaScript", "Rust"],
    "Popularity": [95, 90, 70]
}

df = pd.DataFrame(data)
df

完全在浏览器中运行——无需服务器,也无需 API 调用。

PyScript vs. JavaScript

FeaturePyScriptJavaScript
LanguagePythonJavaScript
Browser‑native
Performance中等
Ecosystem科学、机器学习Web优先
Learning Curve对 Python 开发者友好标准 Web 技术栈

PyScript 不是 JavaScript 的替代品,而是一个补充工具。

常见使用场景

  1. 教育与学习

    • 交互式 Python 教程
    • 浏览器中的实时编码笔记本
  2. 数据可视化

    • 基于浏览器的分析仪表板
    • 轻量级数据探索工具
  3. 原型设计

    • 快速 UI + 逻辑实验
    • 概念验证应用
  4. 科学出版

    • Web 文档中的可重复研究

PyScript 的局限性

虽然功能强大,PyScript 仍有一些限制:

  • 执行速度慢于 原生 JavaScript
  • 初始加载体积大(Pyodide 运行时)
  • 对系统资源的访问受限

不适用于:

  • 高性能游戏
  • 实时应用
  • 大规模生产前端(暂时)

PyScript 在生产环境中:它准备好了吗?

PyScript 对于特定用例具备生产能力,尤其是:

  • 内部工具
  • 教育平台
  • 数据驱动的界面

然而,对于大型消费类应用,JavaScript 框架仍然占主导地位,因为其性能和生态系统的成熟度更高。

PyScript的未来

路线图包括:

  • 更小的运行时捆绑包
  • 更好的性能优化
  • 与 Web 标准的更深度集成
  • 与 JavaScript 框架的改进互操作性

随着 WebAssembly 的持续演进,浏览器中的 Python 将变得越来越可行。

何时应使用 PyScript?

使用 PyScript 的情况:

  • 你以 Python 为首选语言
  • 你希望在浏览器中进行数据处理
  • 你正在构建交互式的教育或分析工具
  • 你希望后端复杂度最小化

避免使用的情况:

  • 需要超低延迟
  • 正在构建大规模的面向消费者的网页应用
  • 严重依赖仅有 JavaScript 的库

最后思考

PyScript 通过消除对 JavaScript 的严格依赖来实现浏览器逻辑,代表了 Web 开发的 范式转变。它以直接、原生且富有表现力的方式向 Python 开发者敞开了 Web 大门。虽然它并非 JavaScript 的通用替代品,但它为以 Python 为中心的项目提供了一个有吸引力的选项,尤其是那些侧重于教育、数据科学和快速原型制作的项目。

取代 JavaScript,但它极大地扩展了在 Web 上使用 Python 的可能性。

0 浏览
Back to Blog

相关文章

阅读更多 »

Xbox UI 作品集网站

文章 - URL: https://gabrielcabrera.co/ - 积分: 9 评论 - 评论 URL: https://news.ycombinator.com/item?id=47044179 - 评论数量: 2...

Inertia.js 静默破坏你的应用

TL;DR 在一个生产环境的 Laravel 12 + React 19 + Inertia v2 应用中工作了数周后,我反复遇到诊断成本高的故障模式:重叠访问可能……