PyScript 核心特性
Python in the browser:启用 drop-in content、外部文件托管(基于 Pyodide 项目),以及不依赖服务器端配置的应用程序托管。
Python 生态:提供流行的 Python 和科学计算软件包(例如 numpy, pandas, scikit-learn 等)。
Python with JavaScript:在 Python 和 JavaScript 对象和命名空间之间进行双向通信。
环境管理:开发者可定义要引入哪些包和文件,以便页面代码的运行。
可视化应用开发:开发者可使用现成的 UI 组件,如按钮、容器、文本框等。
灵活的框架:开发者可以利用它在 Python 中直接创建和分享新的可插拔和可扩展的组件。
PyScript 目标
提供干净简单的 API。
支持标准 HTML。
扩展 HTML 以读取稳定且可靠的自定义组件。
提供可插拔、可扩展的组件系统。
CDN
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
基础用法
<py-script>
print('Hello PyScript!')
</py-script>
复杂一点
<py-script>
import datetime as dt
pyscript.write('today', dt.date.today().strftime('%A %B %d, %Y'))
def compute_pi(n):
pi = 2
for i in range(1,n):
pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
return pi
pi = compute_pi(100000)
pyscript.write('pi', f'π is approximately {pi:.3f}')
</py-script>
引用第三方库(head标签中引用)
<py-env>
- numpy
- matplotlib
</py-env>
![在这里插入图片描述](https://img-blog.csdnimg.cn/b9b31c55d56547f2af7258db0ecce2a4.png
完整例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<title>pyscript</title>
<py-env>
- numpy
- matplotlib
</py-env>
</head>
<body>
<b><p>Today is <u><label id='today'></label></u></p></b>
<br>
<div id="pi" class="alert alert-primary"></div>
<div id="plot"></div>
<div id="plot2"></div>
<py-script>
print("Hello PyScript!")
</py-script>
<py-script>
import datetime as dt
pyscript.write('today', dt.date.today().strftime('%A %B %d, %Y'))
def compute_pi(n):
pi = 2
for i in range(1,n):
pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
return pi
pi = compute_pi(100000)
pyscript.write('pi', f'π is approximately {pi:.3f}')
</py-script>
<py-script>
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randn(100)
y=np.random.randn(100)
fig, ax=plt.subplots()
ax.scatter(x, y)#散点图
ax.set_title("demo")
pyscript.write("plot",fig)
</py-script>
<py-script>
x=[1, 2, 3, 4]
y=[1, 4, 9, 16]
fig, ax=plt.subplots()
ax.plot(x, y)#折线图
ax.set_title("line-chart")
pyscript.write("plot2",fig)
</py-script>
</body>
</html>
总结
现阶段,运行带有 PyScript 的页面加载速度特别慢,像一下子回到了原始年代。
目前阶段,只能尝试新鲜感,知道这么个东西,项目中最好还是不要使用。
项目现在还在完善阶段,许多功能还没有支持,但是从github热度和参与贡献的人数来看,前途还是可以的。