猜你感兴趣

  • 使用Pyqt5玩转ChatGpt
  • 内网文件共享服务
  • 快速搭建私有pip镜像源
  • python设计模式-创建型模式
  • docker搭建私有git服务器,项目备份和迁移
  • redis持久化方案

解决方案:

  • 编译运行,比如Brython,Skulpt,Transcrypt,即将Python语言编译成JavaScript然后在浏览器网页中运行。
  • 在浏览器中内置Python解释器,如Pyodide,PyPy.js, PyScript。

Brython 和Skulpt 这样的项目是用JavaScript重写了标准的Python解释器,因此,你能够直接在浏览器中运行Python代码。不幸的是,由于它们是由JavaScript启动的完全的新的Python的实现,其不能够与用C写的Python扩展兼容,比如 NumPy 和Pandas。因此,没有数据科学工具。
而PyScript 是基于Pyodide来 构建的。

PyScript

简介

在 PyCon US 2022 上,知名 Python 发行版 Anaconda 开发商近日宣布了可在浏览器端运行的 Python — PyScript。根据官方的介绍,PyScript 是一个开发框架,该框架允许在浏览器中运行Python应用。为开发者提供了在标准 HTML 中嵌入编写 Python 代码的能力、使用 Python 调用 JavaScript 函数库,以及创建 Python Web 应用。它可以让开发者在HTML中创建丰富的Python应用程序,且Python代码可与JavaScript实现双向通信。

官方表示,通过使用PyScript,Python开发者便不需要担心程序部署问题,因为PyScript让程序直接在网页浏览器中运行,也就是说,可以在HTML文件中,分享开发成果,只要其他人在网页浏览器中打开文件,该文件中的程序代码就会开始运行。

另外,PyScript 是基于 Pyodide来 构建的,Pyodide 由编译成 WebAssembly 的 CPython 3.8 解释器组成,允许在网页浏览器中运行 Python。Pyodide 可以安装来自 PyPi 的任何 Python 包。Pyodide 还包括一个外部函数接口,可以将 Python 包暴露给 JavaScript,并将浏览器 UI,包括 DOM,暴露给 Python。

官网地址

https://pyscript.net/

示例代码

 <html><head><link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" /><script defer src="https://pyscript.net/latest/pyscript.js"></script></head><body><py-script>print('Hello, World!')</py-script></body></html>

Pyodide

简介

Pyodide,就很强大了,它将Python的科学计算生态搬到浏览器中,比如numpy、scipy、matplotlib等科学计算常用的函数库直接放进浏览器中,而不是常见的比如作为浏览器服务器后端来调用。这样实现的效果就是不需要部署服务器,直接在浏览器中做复杂的函数计算,并反映到网页上。

Pyodide 项目则是通过将现有的 CPython 解释器编译为 WebAssembly 并在浏览器的 JavaScript 环境中运行这个编译出来的二进制文件,带给你一个完全运行在浏览器中的完整的,标准的Python解释器,并具有完整的访问浏览器的Web APIs的能力。

此外,Pyodide 是Mozilla的一个实验性项目,主要解决浏览器中无法进行科学计算的痛点,Pyodide 实现python程序完全在浏览器中运行,而不是在远程内核中执行数据科学计算。这样可以在浏览器中使用python强大的科学计算生态。

但是,Pyodide也伴随着一个巨大的缺点,那就是包体积巨大,在浏览器中第一次访问内含Pyodide的网页时,会下载相应的python包,最基础的pyodide也有22MB大小,更不用说如果有额外的包,比如matplotlib,会更加巨大,导致长时间加载不出来页面;

优势

  • 在Python和JavaScript之间进行交互
  • 实时交互可视化,无需像jupyter一样通过网络请求远程内核计算并传输数据,减少网络延迟,本地实时计算并展示
  • 类型隐私转换,Pyodide会在许多Python与JavaScript之间的内建数据类型之间进行隐式转换。
from js import document # 将document对象作为一个代理从JavaScript端导入到Python
document.getElementById("myElement")  # 从Python中对其调用方法:
  • 多维数组
    在Python中, NumPy 数组是最常用的多维数组的实现。JavaScript具有TypedArrays,其仅含有一个单一的数值类型,但是是一维的,因此需要在其之上构建多维索引。
    由于实际上这些数组可能会非常大,我们不想在语言运行时间拷贝它们。那不仅仅会花相当长的时间,而且在内存中同时保留两个拷贝将会加重浏览器所具有的被限制的内存的负担。
    幸运的是,我们可以不用拷贝来共享数据。多维数组通常是用少量用于描述值类型和数组形状及内存分布的元数据来实现的。数据本身是从元数据中通过指针访问的另一个内存区域。该内存处于一个叫作“WebAssembly堆”的区域,这带来一个优势,因为其可以从JavaScript和Python中同时访问。我们可以简单地在语言之间拷贝元数据(其本身非常小),并保持指针指向WebAssembly堆中的数据。

官网地址

https://pyodide.org/en/stable/

示例代码

<!doctype html>
<html><head><script src="https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js"></script></head><body>Pyodide test page <br>Open your browser console to see Pyodide output<script type="text/javascript">async function main(){let pyodide = await loadPyodide();console.log(pyodide.runPython(`import syssys.version`));pyodide.runPython("print(1 + 2)");}main();</script></body>
</html>

PyPyJs

PyPyJs是在浏览器中JIT编译Python的实现 PyPy的一个可替代品,其使用emscripten。它有潜力能够非常迅速地运行Python代码,原因和PyPy一样。不幸的是,它也像PyPy一样有无法执行C扩展 的问题。所有这些方式使得我们要去重写科学计算工具来获得足够的性能。作为一个经常使用Matplotlib的人,我知道那将占据多少数不清的个人时间:其它的项目已经进行过尝试并停滞不前,而且肯定是会带来许多我们这样的杂凑的创业团队无法处理的工作量。我们因此需要构建一个尽可能地接近标准Python实现的工具,以及大多数据科学家已经使用的科学计算技术栈。

浏览器运行python代码相关推荐

  1. 直接在浏览器运行Python代码

    到这个链接将代码下载到本地,然后打开cmd,使用python运行此文件,然后不要关闭窗口: https://raw.githubusercontent.com/michaelliao/learn-py ...

  2. 浏览器可以运行 Python 代码了?

    作为 Python 程序员,很羡慕那些 Javascript 开发者,动不动就能写出令人惊艳的网页.不过今年,我们也能用 Python 写前端了:Anaconda 团队开发出了 PyScript,你可 ...

  3. Python之父龟叔:考虑在浏览器里面使用 Python.js 运行 Python 代码

    文 | 局长 出品 | OSC开源社区 Mypy 项目核心团队的成员 ethanhs 发表推特称,得益于 Python 团队核心开发者 @ChristianHeimes 最近提交的 commit,他找 ...

  4. 适合ipad的python编程软件-如何用iPad运行Python代码?

    其实,不只是iPad,手机也可以. 痛点 我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题. 其中最让人头疼的,就是运行环境的安装. 实事求是地讲,参加工作坊之前,我已经做了认真准 ...

  5. python能在ipad上运行吗_如何用iPad运行Python代码?

    其实,不只是iPad,手机也可以. 痛点 我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题. 其中最让人头疼的,就是运行环境的安装. 实事求是地讲,参加工作坊之前,我已经做了认真准 ...

  6. ipadpython代码_科学网—如何用iPad运行Python代码? - 王树义的博文

    其实,不只是iPad,手机也可以. 痛点 我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题. 其中最让人头疼的,就是运行环境的安装. 实事求是地讲,参加工作坊之前,我已经做了认真准 ...

  7. iPad该如何运行Python代码?

    其实,不只是iPad,手机也可以. 痛点 我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题. 其中最让人头疼的,就是运行环境的安装. 实事求是地讲,参加工作坊之前,我已经做了认真准 ...

  8. python手机版打了代码运行不了-三款可以在安卓手机上运行Python代码的软件

    导语 READ 我相信大家平时大多数时间肯定都是在电脑上面敲Python代码,有时候出门外或者不方便使用电脑的时候,你是否曾想用手机就能编写和运行Python代码呢?本文将会介绍3款不同的安卓软件帮忙 ...

  9. 安卓如何运行python_如何在android上运行Python代码?

    这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...

最新文章

  1. Script标签的async和defer
  2. HDLBits答案(18)_Verilog有限状态机(5)
  3. 调试 ASP.NET Core 2.0 源代码
  4. html语言怎么添加图片,我想问你一下,你是怎么在html中插入本地图片?非常感谢...
  5. 爬虫前期知识的储备(二)
  6. **CI中使用IN查询(where_in)
  7. 大数据分析必须要会的数据预处理操作(一)!!!
  8. 一个经典实用的iptables shell脚本
  9. python网络安全宣传周_基于Python的IA分布式系统_吴芳
  10. 物联网现状及未来发展趋势
  11. 特殊字符大全-希腊字母俄文注音拼音日文序集心型方形点数绘表(转载)
  12. 链路(link)与数据链路(data link)
  13. 体系结构实验(4)—— Tomasulo算法
  14. Golang线程池gpool
  15. 吴洪声十问戴跃: 域名圈巴菲特是如何炼成的?
  16. js实现点赞、取消点赞思路(前端技术适用)
  17. 视频超分:Zooming Slow-Mo(Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution)
  18. Android学习---zygote(上)
  19. jQuery拆分字符串 split()并且遍历$.each()
  20. C# 接入企业微信群聊--机器人【markdown】

热门文章

  1. 基于6s模型的遥感影像大气校正方法
  2. EditPlus3.4 注册码
  3. 关注Game内嵌Flash UI
  4. 机器学习之多元分类(机器学习基石)
  5. 商业流程服务BPass你真的了解吗?
  6. Centos6部署leanote蚂蚁笔记
  7. 计算机居中试题,计算机基础实操试题.doc
  8. xlrd和xlwt模块
  9. 嵌入式面经汇总(一)
  10. 成长系统的设计方法:如何“挖坑”,又不让玩家反感