在浏览器上尝试 Python 的第一印象

使 Python 成为通用编程语言的唯一缺失部分就在这里——每当我们与其他开发人员争论最好的编程语言时,我们都会谈论 JavaScript 和 Python 几个小时。两者都是强大、灵活的语言,在当今世界占据主导地位。但是 Python 的死胡同是它无法在浏览器上运行。 JavaScript (JS),随着 Node 的发现…

在浏览器上尝试 Python 的第一印象

使 Python 成为通用编程语言的唯一缺失部分就在这里

每当我们与其他开发人员讨论最好的编程语言时,我们都会谈论 JavaScript 和 Python 几个小时。

两者都是强大、灵活的语言,在当今世界占据主导地位。但是 Python 的死胡同是它无法在浏览器上运行。

随着 Node 的发现,JavaScript (JS) 几乎可以在任何平台上运行。它甚至具有构建机器学习算法的模块。 JS 有可能成为未来事实上的编程语言。[0][1]

Python 是一门美丽的语言。超级容易学习;超级强大的工作。然而。它无法在浏览器上运行使其远离许多应用程序。

现在,这个鸿沟被弥合了。 Python 现在可以在浏览器上运行。

您可以在 HTML 页面中开始使用 Pandas 构建复杂的数据操作、构建机器学习模型、进行数据可视化等等。

在这篇文章中,我们将讨论:

  • 在边缘设备上运行 Python 的好处;
  • PyScript 入门;
  • 一个完全在浏览器上运行的机器学习模型,以及;
  • 我使用 PyScript 的第一印象。

为什么我们需要在浏览器上使用 Python?

出于多种原因,我们更喜欢在客户端进行计算。我们现在最流行的客户端设备是浏览器。[0]

以下是客户端 PyScript 可以帮助我们的一些方法。[0]

将数据发送回服务器并接收预测可能会更慢。您可以通过在浏览器上进行计算来防止网络延迟。[0]

假设您开发了一个检测火灾的系统。当发生火灾时,它对网络问题有什么帮助?

此外,我们更愿意让敏感数据不进入云端。现在,您可以在不离开客户端设备的情况下进行必要的计算。

最后,将计算转移到边缘设备也可以带来成本效益。您可以计划投资扩展应用程序,而不是前期架构成本。

开始使用 PyScript——浏览器上的 Python。

PyScript 无需特别安装即可开始使用。我们只需要将几个 Web 资源导入到我们的 HTML 头标签中。[0]

让我们创建一个名为 index.html 的 HTML 文件并导入它们。将这些放在结束 标记之前。

PyScript 提供了三个 HTML 标签来编写 Python 脚本。

您可以在 py-env 标记中指定要导入运行时环境的模块。理想情况下,它需要位于我们前面讨论的两个导入标记之后的 HTML 头部。

这些尚未导入到您的脚本中。将其视为 pip 安装。

您仍然必须将其导入 py-script 中,即以下 py-script 标记。

Py-script 标签是您的 Python 脚本所在的位置。您可以将它放在 HTML 正文的末尾。

你还会得到一个 py-repl 标签。它允许浏览器执行用户输入的任意 Python 脚本。

这是一个完整的带有 REPL 的 hello world 示例。

html
    
    
    
    PyScript Test

     Import PyScript 
    
    

     Import Python modules 
    
        - pandas
        - numpy
        - matplotlib
    


     All your other HTML 
    
    
     Python Script Here 
    print("Hello World")

     Create a Python REPL 
    

您现在可以启动 python 开发服务器并在浏览器中访问它。以下命令将启动服务器。

python -m 'http.server' 8080

您可以在浏览器上访问 http://localhost:8080 以查看它的运行情况。它应该如下所示。[0]

我们的 py-script 标签中的 print 语句出现在浏览器中,就像它在终端窗口中一样。

一个很好的替代方法是将我们的 python 文件链接到 py-script 标签,而不是将其写入 HTML 块中。在下一节中,我们将使用此功能来构建功能更强大的应用程序。

浏览器上的一些机器学习

我们已经在浏览器上成功运行了 Python 脚本。它不需要预先安装 Python 或任何依赖项。

但是 Python 的真正威力并没有在简单的 HTML 操作中体现出来。让我们进入稍微高级的工作。

让我们构建一个完全在浏览器内部对数据点进行聚类的 K-Means 算法。

我们将把 Python 代码放在一个单独的文件中,并将其链接到 py-script。让我们在工作目录的根目录中创建一个名为 script.py 的文件,其内容如下。

import pandas as pd
from pyodide.http import open_url
from sklearn.cluster import KMeans

# Read dataset from file using pandas
df = pd.read_csv(
    open_url(
        "https://raw.githubusercontent.com/thuwarakeshm/PracticalML-KMeans-Election/master/voters_demo_sample.csv"
    )
)

# perform K-Means clustering to find 2 clusters considering only age and income of voters
kmeans = KMeans(n_clusters=2, random_state=0).fit(df[["Age", "Income"]])

print("Cluster Centroids")
for cluster in kmeans.cluster_centers_:
    print(f"Cluster I : Age {cluster[0]} and Income {cluster[1]}")

让我们也调整一下我们的 HTML 文件。在下面的文件中,我们添加了一个单独的 div 来呈现我们脚本文件的输出。注意 py-script 标签的输出属性是我们 div 的 id。

此外,我们不是直接用 HTML 编写 Python 脚本,而是将它写在一个单独的常规 Python 文件中。然后我们将 py-script 标签的 src 属性设置为我们新脚本文件的路径。




    K-Means
    

     Import PyScript 
    
    

    
        - pandas
        - scikit-learn
    


    

如果我们尝试在浏览器上再次访问该 URL,您将看到以下输出。

在上面的示例中,我们从外部 URL 下载数据。然后我们使用流行的 scikit-learn 库进行了 K-Means 聚类。

然而,这些都不需要预先安装软件包。它完全在浏览器上运行。

我对 PyScript 的第一印象。

PyScript 是 Python 领域发展中令人印象深刻的一步。然而,我不会很快在项目中使用它。

目前,如果我想利用 Python 的强大功能开发 Web 应用程序,我会改用 Dash 或 Streamlit。

这并不意味着我不喜欢这种情况发生。我不打算在它开始跳跃时剪掉它。但是,我期待很快就会在进化中迈出更多的步伐。

如果您正在使用 PyScript,这些将帮助您获得一个想法。

PyScript 非常慢。

在屏幕上打印东西不应该花这么长时间。

在一台像样的 PC 上显示“Hello World”消息需要 25 秒。在开发者控制台上,我们可以看到造成这种情况的原因。

即使没有第三方包导入,PyScript 仍会从 Web 下载大约 22.7MB 的资源。如果在浏览器上启用了兑现,后续请求会在大约 4 秒内加载。 Web 开发人员仍然认为 4 秒是有缺陷的。

此外,您没有任何线索表明它仍在加载。您需要打开开发者控制台才能看到它。在它完全加载之前,您只会看到一个空白页面。

一件好事是所有 Python 模块都是异步加载的。在加载所有其他页面组件后,它们会在后台加载。[0]

浏览器控制台调试对 PyScript 不是很有帮助。

前端开发人员依赖浏览器控制台输出进行调试。

如果你打开浏览器控制台,PyScript 会打印一些日志。但是没有办法利用这个 API 并放置我们的自定义控制台日志。

我也不能在 PyScript 上使用 VSCode 调试器。如果我们有一些技术可以做到这一点,这可能会有所帮助。

因此,我们现在能做的最好的事情就是编写完全独立于 HTML 的 Python 脚本,并通过 py-script 标签的 src 属性链接它。

远离 HTML 代码格式化程序。

如果您使用 VSCode 或任何其他现代 IDE,您也可以使用代码格式化。

我有经常按格式化快捷键的习惯。

当你在 HTML 中使用 PyScript 代码时,你的 IDE 会假设它是一个普通的 HTML 来格式化它。但是,在 Python 中,缩进就是一切。

因此,如果您像我一样经常使用代码格式化程序,请改用外部脚本文件。

缺乏有关 PyScript 使用的文档。

PyScript 还没有官方文档页面。您可以在他们的 GitHub 存储库中找到入门指南。[0][1]

我很难从外部来源读取数据。

我花了几个小时才弄清楚我们应该使用 Pyodide 的“open_url”方法。我不得不翻阅 GitHub 上提供的示例列表才能弄清楚。文档可以节省我的时间。[0][1]

Final thoughts

PyScript 是一个很好的倡议。然而,它还太不成熟,无法用于任何项目。希望我发现的小差距很快就会被填补。

此外,在客户端运行 Python 脚本有几个好处。我们可以充分发挥 Python 的潜力,而无需像在 Tensorflow 中那样将其转换为 JS。[0]

目前,我会坚持使用 Dash 应用程序或 Streamlits。如果这不可能,那么纯粹用 JS 来做会更好。

我希望 Python 社区能够支持 PyScript 并进一步改进它。

感谢阅读,朋友!看来你和我有很多共同的兴趣。我很想在 LinkedIn、Twitter 和 Medium 上与您联系[0][1][2]

还不是中型会员?请使用此链接成为会员,因为我不会为您支付额外费用,因为我推荐您赚取少量佣金。[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月13日
下一篇 2022年5月13日

相关推荐