本次分享的内容:主要讨论在 PyCon US 2022
[2] 上,由 Anaconda 发布的 PyScript
[3] 技术。据说这项技术被 Anaconda 基于为 99% 的人带来编程这么宏伟的愿景而创建.
PyScript 其实是一个代码框架,允许用户使用 HTML 和 Python 混合开发,基于浏览器创建丰富的 Python 应用程序。旨在为用户提供一流且易于展示和学习的编程语言。
那 PyScript 具体是什么呢?下面是它的一些核心部件:
浏览器中的 Python:支持启用插入式内容、外部文件托管(由 Pyodide
[4] 项目托管),而不依赖于服务器端配置。
Python 生态系统:支持运行许多流行的 Python 包和科学堆栈(例如:numpy、pandas、scikit-learn 等)。
Python with JavaScript: 支持 Python 和 Javascript 对象和命名空间之间的双向通信。
环境管理:允许用户自定义要运行的包和文件页面代码。
可视化应用程序开发:支持使用现成的精选 UI 组件,例如:按钮、容器、文本框等。
灵活的框架:可直接在 Python 中创建和共享新的可插拔和可扩展组件,使用方式非常灵活。
据官方意思,PyScript 框架的使用和 HTML 类似,只是功能相比后者更强大,不过经过号主测试,官方有吹逼的嫌疑。
官方的初衷是希望提供一个可靠且可访问的框架,用于创建应用程序并将其运送到任何硬件和软件平台。
寻找后发现,想要达到为 99% 的人提供编程体验这一目标,几乎只能基于浏览器,而且浏览器本身也是一个不错的平台。浏览器可适用于任何地方(从笔记本电脑、平板电脑到手机),并且安全、强大和稳定。
因此,最后采用基于浏览器平台开发的方案,PyScript 的旨在提供以下功能:
很明显这是官方一个美好且远大的愿景
想要进行 PyScript 开发,流程很简单,几乎和 HTML 前端开发步骤一致。
第一步:导入安装包
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js">script>
head>
第二步:Hello World 开发
组件里面是 Python 代码逻辑,用于输出系统时间。
<body>
Hello world! <br>
This is the current date and time, as computed by Python:
<py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
py-script>
body>
组件里面是 Python 依赖的安装包 numpy 和 matplotlib
组件里面是具体 Python 逻辑代码,实现了一个用随机数字绘制的统计图表功能。
<head>
<py-env>
- numpy
- matplotlib
py-env>
head>
<body>
<h1>Let's plot random numbers:h1>
<div id="plot">div>
<py-script output="plot">
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(500)
y = np.random.randn(500)
fig, ax = plt.subplots()
ax.scatter(x, y)
fig
py-script>
body>
第四步:加载 Python 文件开发
如果想要直接引入现有的 Python 代码也很容易,先在
里面引入文件,然后通过
文件结构
├── matplotlib_2.html
└── py
├── __init__.py
└── data.py
Python 代码
# -*- coding: utf-8 -*-
import numpy as np
def make_x_and_y(n):
x = np.random.randn(n)
y = np.random.randn(n)
return x, y
PyScript 代码
<head>
<py-env>
- numpy
- matplotlib
- paths:
- ./py/data.py
py-env>
head>
<body>
<h1>Let's plot random numbers 2:h1>
<div id="plot">div>
<py-script output="plot">
import matplotlib.pyplot as plt
from data import make_x_and_y
x, y = make_x_and_y(n=500)
fig, ax = plt.subplots()
ax.scatter(x, y)
fig
py-script>
body>
作为一名 Pythonistas 首次尝试 PyScript 框架后的感觉:
和
即可,但运行速度太慢,helloworld 加载了约 3s,随机图表加载了约 15s,都属于生产不可接受的范围。以上,就是今天的全部内容,几乎包含了 PyScript 框架的全部基础功能,想要尝试完整源码的码农,可关注我,下方即可领取。