PyScript 教程 | 在 Web 浏览器中运行 Python 脚本2025年03月17日 | 阅读 9 分钟 在本教程中,我们将学习新引入的 Python 库,也可以说是新功能 PyScript。该库允许我们在网页浏览器中运行 Python 脚本。Python 提供了许多使程序员生活更轻松的功能。现在,他们推出了新功能,可以将 Python 程序集成到前端。 长期以来,JavaScript 一直是前端开发中最流行和主导的语言。它可以在浏览器中原生运行,并通过 DOM API 与 HTML 和 CSS 交互。但随着 WebAssembly 的到来,情况开始发生变化。现在许多语言,如 C、C++ 和许多其他语言都可以在浏览器中高速运行。那么 Python 为何不利用这一特性呢? PyScript 是一个在 HTML 中交错使用 Python 的系统。我们将在本教程中涵盖以下主题。
前提条件在继续之前,我们应该具备:
什么是 PyScript?PyScript 是一个开源的 Python 框架,它提供了使用 Python 创建前端 Web 应用程序的功能。这意味着我们可以在 HTML 中编写和运行代码。PyScript 允许我们将 Python 代码嵌入到 HTML 中,或链接到 Python 文件,并且代码将在浏览器中运行。我们无需在后端运行 Python。 PyScript 由 Anaconda 开发,并于 2022 年 4 月 30 日在 PyCon US 公开。在撰写本文时,PyScript 仍处于开发阶段,团队正在积极进行工作。因此,我们可以预期会有重大更改和新功能,因为它尚未稳定发布。 PyScript 如何工作?PyScript 基本上基于 pyodide,这意味着“CPython 到 web assembly/Emscripten 的移植”项目。WebAssembly 是一种低级二进制格式,允许我们用其他语言编写程序,然后在浏览器中执行。CPython 允许我们在浏览器上安装和运行 Python 包,而 PyScript 抽象允许我们使用 Python 在浏览器中开发前端应用程序。 PyScript 的特性以下是 PyScript 的特性:
PyScript 的项目设置在开始使用 PyScript 之前,让我们创建一个目录来存放我们的代码。 打开终端并使用以下命令创建项目目录。 现在在 Visual Studio 或 Pycharm 中打开目录。现在我们已准备好实现 PyScript。 开始首先,我们将创建 HTML 文件,并在 HTML 页面的 <head> 部分添加指向 PyScript 资产(包括 CSS 文件和 JavaScript 文件)的链接。完成资产设置后,我们可以通过以下两种方式之一在 HTML 文件中使用 PyScript:
顾名思义,我们可以将 Python 代码嵌入到 HTML 中的 <py-script> 标签内。<py-script> 标签可以根据手头的任务添加到 <head> 或 <body> 标签中。
在这种方法中,我们编写带有 .py 扩展名的代码,然后可以使用 src 属性在 <py-script> 标签中引用该代码。 让我们了解内部 PyScript 内部 PyScript这是开始使用 PyScript 的最简单快捷的方法,即将 Python 代码嵌入到 HTML 文件中。 在我们的工作目录中,创建一个 hello_pyscript.html 文件并添加以下脚本。 示例 - 在上面的代码中,我们在 <head> 部分添加了 pyscript.css。它包含 PyScript 可视组件、REPL、PyScript 加载器等的样式。然后,我们链接到 pyscript.js 文件,其中包含使用 PyScript 所需的功能,例如创建 <py-script> 标签,我们可以在其中编写 Python 代码。 现在将文件保存在项目目录的根目录中,并在 Chrome 中打开 hello_script.html 文件。 外部 PyScript外部 PyScript 是一种更好、更具扩展性的添加代码的方法。以下是在外部文件中使用 PyScript 代码的一些原因。
要实现 PyScript 外部,我们需要创建 index.html 文件和一个要嵌入的 Python 文件。 创建 index.html 文件 创建 index.html 文件并链接到 PyScript 资产。 目前,此文件无法工作,因为我们只是链接到 PyScript 资源。为了使其工作,我们需要创建 main.py 文件,其中包含我们的 Python 代码。 创建 main.py 在 main.py 文件中,我们创建了一个 Python 函数,用于打印问候消息。让我们创建 main.py 文件。 上面的函数接受一个 name 参数,并打印一条包含存储在 name 参数中的姓名的问候消息。当调用此函数时,它将打印“嗨,彼得·帕克”。 在 HTML 文件中嵌入 main.py 文件现在,我们将在 index.html 文件中链接 main.py 文件。打开 index.html,在 body 标签中添加样式行。 示例 - 正如我们所观察到的,我们添加了 src 标签,它接受文件名和路径。 在接下来的部分中,我们将引用一个外部 Python 文件,这将需要我们使用服务器来避免 CORS 错误。 使用 PyScript REPLPython 提供了一个 Read-Eval-Print Loop (REPL),我们可以用它来实验和尝试 Python 代码。 要使用 REPL,请在 index.html 文件中的 body 标签中添加 <py-repl> 标签。 在这里我们可以使用所有功能;例如评估表达式、创建函数等等。要查看表达式的评估结果,我们需要单击绿色的播放图标。 以下是一些我们可以看到的操作: 示例 - ![]() 输出 31536000.0 The sum of a + b = 30 现在我们了解了如何使用 REPL,接下来我们将学习如何在 Python 中创建和使用模块。 在 PyScript 中使用 Python 模块现在我们将创建 Python 自定义模块并在我们的 HTML 代码中使用它。我们还将从 Python 标准库以及第三方模块导入模块。 PyScript 提供了 <py-env>,它允许我们引用模块或模块文件路径。 创建自定义模块现在我们在项目目录中的 my_module.py 文件中定义了两个函数。让我们添加以下代码行。 my_module.py 现在,我们正在创建 modules.html 文件并添加以下代码。 在上面的代码中,我们在 body 标签内使用了 <py-env>,它接受一个 YAML 列表,其中 paths 作为其键。my_module.py 是自定义模块相对于 modules.html 文件的文件路径。一旦指定了自定义模块的路径,PyScript 将在文件中导入模块。 我们从 my_module 模块导入了乘法函数。当我们启动服务器时,我们可以看到以下输出。 从 Python 标准库导入模块PyScript,正如我们之前讨论的 Python 是基于 Pyodide 编写的,它提供了对 Python 标准库中许多可用模块的访问,这些模块可供您使用,除了以下模块:
根据 Pyodide 官方文档,以下模块可以导入,但由于 WebAssembly VM 的限制,它们无法正常工作。
我们修改了 <py-script> 标签中的 Python 代码,以使用 random 模块生成随机数。 示例 - 当我们访问服务器时,每次刷新页面都会看到生成的随机数。 使用第三方包除了使用 Python 内置模块,我们还可以使用 Pyodide 中提供的第三方库,例如:
创建一个新的 HTML 文件并添加以下代码 - 示例 - 在上面的代码中,我们添加了 <py-env> 标签,其中包含我们要在项目中使用的第三方包列表,包括 - NumPy 和 Matplotlib 包。接下来,在 <py-script> 标签中,我们将 NumPy 导入为 np,将 Matplotlib 导入为 plt。然后,我们调用 NumPy 的 array 方法,该方法创建一个数组并存储在 arr 变量中。之后,我们调用 Matplotlib 的 plot 方法,将数组 arr 作为参数来绘制图表。 输出 - 现在,我们已经解释了如何使用自定义模块、内置模块和第三方包。我们将在下一节讨论如何访问和操作 HTML 元素。 如何使用 PyScript 访问和操作 HTML 元素在本教程的这一部分,我们将学习使用 ID 或 CSS 类选择 HTML 元素,修改元素,将事件附加到元素,以及使用 PyScript 创建新元素。 使用 Element 类PyScript 随附 Element 类,它允许我们使用 ID 选择 HTML 元素。 为了理解它,创建一个新的 html 文件 elements.html 并插入以下代码 - 示例 - 在上面的代码中,我们在 <body> 标签中使用了 ID 为 navigation 的 <ul> 元素。我们将使用此 ID 通过 Element 类选择此元素。所选实例将为我们提供可用于选择后代并对其进行操作的方法。 我们使用了另一个 ID 为 output 的 <div> 标签。我们将更改其 innerHTML 以写入新值。然后我们链接了 ge_element.py 文件,该文件将包含我们的 Python 代码。现在,让我们创建 get_element.py 文件,并添加以下文件。 示例 - get_element.py 在上面的代码中,我们使用 Element 类通过导航 ID 访问 <ul> 元素。 当使用 Element 类选择元素时,我们可以利用以下一些方法:
结论我们已经涵盖了 PyScript 的重要主题,您对这个框架有了一定的了解。本教程包括它的介绍、工作原理和功能。我们可以在 HTML 中轻松使用 PyScript。我们可以使用内部或外部 Python 脚本。PyScript 无疑是一项有趣的新技术,它允许您借助 Pyodide 和 WebAssembly 在 Web 浏览器中运行 Python 代码。 |
我们请求您订阅我们的新闻通讯以获取最新更新。