在PyCon US 2022上,Python开发商Anaconda发布了PyScript,该框架可以在浏览器中运行Python应用。它允许开发者在HTML中创建丰富的Python应用程序,Python代码可与JavaScript实现双向通信。
什么是PyScript
PyScript 是一个框架,它允许用户通过简单地使用框架本身提供的特殊 HTML 标签在浏览器中运行 Python 并创建丰富的应用程序。核心功能包括:
-
浏览器中的 Python:启用插入式内容、外部文件托管(由 Pyodide 项目实现,谢谢!)和应用程序托管,而不依赖于服务器端配置
-
Python 生态系统:运行许多流行的 Python 包和科学堆栈(例如 numpy、pandas、scikit-learn 等)
-
Python with JavaScript : Python 和 Javascript 对象和命名空间之间的双向通信
-
环境管理:允许用户定义要包含哪些包和文件以运行页面代码
-
可视化应用程序开发:使用现成的精选 UI 组件,例如按钮、容器、文本框等
-
灵活的框架:一个灵活的框架,可用于直接在 Python 中创建和共享新的可插拔和可扩展组件
说了这么多……PyScript 只是 HTML,只是功能更强大一点(好吧,也许很多),这要归功于 Python 库的丰富且可访问的生态系统。
PyScript使用
要尝试 PyScript,请将适当的 pyscript 文件导入您的 html 页面:
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
然后,您可以在 html 页面中使用 PyScript 组件。PyScript 当前实现了以下元素:
-
<py-script>: 可用于定义可在网页中执行的 python 代码。元素本身不渲染到页面,仅用于添加逻辑
-
<py-repl>:创建一个 REPL 组件,该组件作为代码编辑器呈现到页面并允许用户编写可执行代码
查看pyscriptjs/examples文件夹以获取有关如何使用它的更多示例,您需要做的就是在 Chrome 中打开它们。
除了在<py-script>中写python源代码以外,也可以通过直接传递源文件引入python脚本。
<py-script src="/my_own_file.py"></py-script>
PyScript 将读取该代码,在 python 解释器上运行它并相应地处理输出。
如果我需要加载(安装)我的应用程序所需的其他模块和包,可以使用<py-env>标签来指定环境要求
<py-env>
- bokeh
- numpy
- paths:
- /utils.py
</py-env>
要添加类似 REPL 的组件来创建交互式体验,只需使用<py-repl>
标签
<py-repl id="my-repl" auto-generate="true"> </py-repl>
PyScript示例
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>PyScript Hello World</title>
<link rel="icon" type="image/png" href="favicon.png" />
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<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>
</html>
运行结果:
TIPS
作为搞安全的大兄弟们,此时会不会想到,这种方式岂不是可以浏览器端RCE。放心!经过测试,当调用敏感的操作,例如:OS.system('whoami')时,浏览器返回-1错误,是没有权限执行的。
https://pyscript.net/
原文始发于微信公众号(锋刃科技):PyScript,让你在浏览器运行python程序
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论