文章目录

  • 前言
  • 一、PyScript是什么?
  • 二、如何使用
    • 1.示例代码
    • 2.数据处理
    • 3.源码剖析
    • 4.可用类库范围
  • 总结

前言

近日,用于科学计算的Python发行版厂商Anaconda发布了PyScript。看完简介Pyscript似乎是跨时代的突破,然而深入研究后发现实现Python前端化编程还任重道远。总体来说,Pyscript属于一次微创新,亮点很多,但基于旧有仍有许多难题需要攻克。Anaconda作为一个大厂,喊出如此振奋人心的slogan,未来的发展仍是十分值得期待。


一、PyScript是什么?

Run Python in Your HTML,Pyscript官网给开发者们描绘出了无比诱人的前景。
这周Pyscript横空出世,几乎席卷了所有前端和Python社区的头条。寥寥几行代码,展现的是一个跨界的突破。

Anaconda 官方对Pyscript提出了很高的期待,Welcome to the world PyScript 文章中对Pyscript做了定义。

Pyscript是一个让用户使用其提供的自定义HTML标签,就可以轻松地在浏览器中运行Python脚本和创建富媒体应用的框架。
[ PyScript is a framework that allows users to run Python and create rich applications in the browser by simply using special HTML tags provided by the framework itself. ]

核心功能包括:
[ Core features include: ]

  • 浏览器中运行Python脚本:插入式标签编程,通过引入外部文件(大多都是来自 Pyodide 项目 的支持, 十分感谢!)进行渲染,应用不依赖服务器端配置。
    [ Python in the browser: Enable drop-in content, external file hosting (made possible by the Pyodide project, thank you!), and application hosting without the reliance on server-side configuration ]

  • 支持Python生态体系:可以运行主流的Python类库和科学技术工具包(比如:numpy, pandas, scikit-learn 等等)
    [ Python ecosystem: Run many popular packages of Python and the scientific stack (such as numpy, pandas, scikit-learn, and more) ]

  • 打通Python和JavaScript壁垒:Python 和JavaScript对象双向通信,共享命名空间。
    [ Python with JavaScript: Bi-directional communication between Python and Javascript objects and namespaces ]

  • 环境配置化: 允许用户在页面代码运行时,自定义引入哪些包和文件。
    [ Environment management: Allow users to define what packages and files to include for the page code to run ]

  • 可视化应用开发:用户可方便使用现成的 UI 组件,如按钮、容器、文本框等等。
    [ Visual application development: Use readily available curated UI components, such as buttons, containers, text boxes, and more ]

  • 可灵活扩展框架:一个可用于直接在 Python 中创建和共享可插拔和可扩展组件的灵活框架。
    [ Flexible framework: A flexible framework that can be leveraged to create and share new pluggable and extensible components directly in Python ]

二、如何使用

1.示例代码

官方提供的hello_world:

<!DOCTYPE html>
<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>

运行结果:

2.数据处理

写一个生成正态分布:

<!DOCTYPE html>
<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><py-env>- numpy</py-env>   </head><body><py-script>
import numpy as np
result = np.random.normal(0.5, 1, 1000)
for i in result:print(i)
print(np.mean(result), " ", np.var(result))</py-script></body>
</html>

控制台能看到python的执行日志

对于基础的python操作和类库引入都是可以正常运行。

3.源码剖析

从官方的介绍中,也可以看到Pyscript主要是依赖 Pyodide 项目运行。
这一点 github源码 中也有体现:

        loadRuntimes() {console.log('Initializing runtimes...');for (const runtime of this.values.runtimes) {const script = document.createElement('script'); // create a script DOM nodeconst runtimeSpec = new PyodideRuntime(runtime.src);script.src = runtime.src; // set its src to the provided URLscript.addEventListener('load', () => {void runtimeSpec.initialize();});document.head.appendChild(script);}}

运行前会加载 Pyodide 模块,程序耗时也主要来自这块(严重依赖 pyodide 模块加载速度,官方CDN不太稳定,必要时需要切换CDN

Pyscript相当于封装了一层Pyodide实现,上面Pyscript的数据处理也可以通过以下代码实现

pyodide.runPythonAsync(`import micropipawait micropip.install('snowballstemmer')import numpy as npresult = np.random.normal(0.5, 1, 1000)for i in result:print(i)print(np.mean(result), " ", np.var(result))
`);

4.可用类库范围

Pyscript依赖Pyodide的构建库,可用范围还只能满足基本要求,如有定制开发需要私有化部署 Pyodide 版本进行定制式开发。


总结

PyScript 开创式地提供了前端使用Python处理复杂数据的模式,但加载方式和渲染模式还是存在较大改良空间。期待 PyScript 生态圈的后续发展。

Anaconda 推出了 PyScript,在前端写Python还有多远?相关推荐

  1. 使用Anaconda写Python程序,强烈推荐Spyder

    以前我用Python多是结合Arcpy在ArcGIS的IDLE下面编写和运行程序,但是限制太多,很多包无法安装使用,所以我想要安装一个高版本的Python编辑器. 通过上网查阅资料,了解到了Anaco ...

  2. python用哪个软件好-写 Python 哪个编辑器 / IDE 最好用?

    首先,如果你说你要使用python自带的IDE,我毫不夸张的说,你怕是dsb(大帅逼),你确定你能不输错变量名.不输错语法和关键字?python自带的ide更适合你用来测试一个写好的脚本,或者对代码进 ...

  3. python自动源码_谷歌推出Tangent开源库,在Python源代码上做自动微分

    原标题:谷歌推出Tangent开源库,在Python源代码上做自动微分 李林 编译自 Google Research Blog 谷歌今天推出了一个新的开源Python自动微分库:Tangent. 和现 ...

  4. anaconda pandas运行不了_学习python你必须弄懂的 Python、Pycharm、Anaconda 三者之间的关系...

    Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用.下面来介绍运行Python代码常用到的工具总结. 一.Py ...

  5. 零基础应该先学习 java、php、前端 还是 python?

    由于IT行业的待遇相对来说比较好,导致一些人想半路出家做程序员(非科班程序员),那么首先得先掌握一门编程语言(不求精通,会用就好).也就是零基础学习,那么到的选择什么呢?是Java.PHP.前端还是P ...

  6. 在IDEA中写Python

    1.IDEA(下载) 在IDEA中,点击[File]-[Settings...]-[Plugins],在里面搜索python,并安装插件.(安装后需要重启有效) 在IDEA中,配置python SDK ...

  7. 如何用C++ 写Python模块扩展(一)

    最近做一个小软件需要用到虚拟摄像头,在网上找了找虚拟摄像头软件 发现 Vcam 软件有个API 可以用,有API当然是最好的啦,但是这个API只有C++和C#的.都说 "人生苦短,得用pyt ...

  8. 会写Python代码的人工智能Kite宣布支持Linux,“程序猿”要失业了?

    Kite,那个能为"程序猿"们减少写Python代码时的重复劳动的"自动完成AI",近日宣布,为了回应社区的反馈,它已经添加了对Ubuntu 16.04+.De ...

  9. 小白入门:用什么写Python?

    对于新手而言,学了大概的语法,七七八八的历史.概念.知识,然而最直接的一个问题却无人解答:到底要用什么软件.什么环境来写python?比如.m文件可以用matlab写,java可以用Eclipse写, ...

最新文章

  1. SQL学习笔记:库和表的创建
  2. Nginx — Overview
  3. 字符串的第n个排列的算法
  4. NLPIR智能语义:大数据精准挖掘是信息化发展趋势
  5. 【强化学习】AC注释版本
  6. dataset.xsd的定义(vs2008)
  7. php分页页数过多隐藏,织梦DEDE中内容页分页数目太多时隐藏方法
  8. 不得不说--自动化测试元素定位与用例设计
  9. linux debian安装ssh,Ubuntu Linux上安装SSH和vsFTPd的方法
  10. python快速整理excel_python批量处理excel文件数据
  11. 分享一波恋爱社交APP源码,真好~
  12. LCD1602的学习与理解
  13. 深入浅出SIP协议详解(以呼叫中心呼入呼出为例)
  14. 安装惠普M1136打印机一直处于“新设备已连接”状态 解决方法
  15. react 父组件数据更新 触发 子组件重新渲染
  16. [51nod 1051 最大子矩阵和]前缀和+dp
  17. Linux 基本操作
  18. 《云云众声》第94期:HP网络策略遭质疑 IBM牵手ARM发力物联网
  19. 2022强国杯初赛部分题目
  20. JavaScript,js的亲戚计算器,中国亲戚关系计算器

热门文章

  1. 实施ERP系统常见的误区
  2. 景区导览小程序怎么开发,需要哪些功能?
  3. 信息学和计算机,信息学奥赛分为几种
  4. Spring入门第一课:Spring基础与配置Bean
  5. 村田电容电感的LTspice,HFSS,AWR,ADS,Genesys模型下载
  6. C51单片机培训开发班
  7. 史上最全讲解:JAVA中的方法 数组 类
  8. react + antd Progress页面滚动
  9. R语言 echarts4r 不显示图形_9本R语言书,从入门到进阶都在这了
  10. 如何清空c盘只剩系统_教你如何删除C盘无用文件,确保系统畅快