Maison >développement back-end >Tutoriel Python >HTML 中可以嵌入 Python 代码吗?

HTML 中可以嵌入 Python 代码吗?

王林
王林avant
2023-04-24 18:13:072081parcourir

什么?可以在 HTML 中直接插入 Python 代码?

PyScript 由来自 Anaconda 的团队开发,是一个用于在 HTML 中插入 Python 代码的工具,这意味着你可以在 HTML 中编写和运行 Python 代码,在 PyScript 中调用 Javascript 库,并在 Python 中进行所有的 Web 开发,是不是很神奇!

什么?可以在 HTML 中直接插入 Python 代码?

有了 PyScript,我们现在可以在 HTML 中编写 Python 代码并构建 Web 应用了,PyScript 可以让更多的前端开发者接触到 Python 的强大功能。有了 PyScript,我们不再需要担心部署问题,因为一切都将在你的浏览器中执行,比如作为数据科学家,你可以在一个 html 文件中分享模型,只要其他人在浏览器中打开该文件,就会运行代码了。

什么?可以在 HTML 中直接插入 Python 代码?

PyScript 是基于 Pyodide(https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyodide.orghttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712) 开发的,它是 CPython 到 WebAssemblyhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Emscripten 的入口,PyScript 支持在浏览器中编写和运行 Python 代码,未来还将提供对其他语言的支持。

什么?可以在 HTML 中直接插入 Python 代码?

什么是 WebAssembly?

使得用 Python 编写网站成为可能的基础技术是 WebAssembly。最初开发 WebAssembly 时,Web 浏览器仅支持 Javascript。WebAssembly 于 2017 年首次发布,到 2019 年迅速成为了 W3C 的官方标准,它包括一种人类可读的 .wat 文本格式语言,然后将其转换为浏览器可以运行的二进制 .wasm 格式,这就使得我们可以用任何语言编写代码,将其编译为 WebAssembly,然后在网络浏览器中运行。

如何使用 PyScript?

PyScript 的 alpha 版本可以在 pyscript.net 上找到,代码可在 https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712github.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript 获得。PyScript 允许你使用以下三个主要组件在 html 中编写 Python:

  • 定义了运行 Python 代码所需的 Python 包。
  • 是你编写在网页中执行的 Python 代码的地方。
  • 创建一个 REPL 组件,用于评估用户输入的代码并显示结果。

    我们先创建一个最简单的示例,代码如下所示:

    
    
    <meta charset="utf-8" https:>
    <meta name="viewport" content="width=device-width,initial-scale=1" https:>
    <title>PyScript Hello World<https:>
    
    <link rel="icon" type="imagehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712png" href="favicon.png" https:>
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712alphahttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.css" https:>
    <script defer src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712alphahttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712head>
    <body>
    Hello world! <br https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
    This is the current date and time, as computed by Python:
    <py-script>
    from datetime import datetime
    now = datetime.now()
    now.strftime("%mhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712%dhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712%Y, %H:%M:%S")
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712py-script>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712body>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712html><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre><p >只需要这页面上显示当前时间即可,在浏览器中打开后就可以看到结果了,如下所示:<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p><p  style="text-align: center;"><img src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712465https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712014https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712168233119092064.png" alt="什么?可以在 HTML 中直接插入 Python 代码?" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p><p >又比如我们创建一个具有流式数据的 Panel 仪表盘,代码如下所示,先通过 引入需要的包,然后在 中编写 Python 代码,如果你不喜欢直接在下编写 Python 代码,也可以使用 Python 文件作为源代码,例如。<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p><pre class="brush:typescript;toolbar:false;"><!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <link rel="icon" type="imagehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712x-icon" href=".https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712favicon.png">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="default">
    <meta name="theme-color" content="#000000">
    <meta name="name" content="PyScripthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Panel Streaming Demo">
    <title>PyScripthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Panel Streaming Demo<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712title>
    <link rel="icon" type="imagehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712x-icon" href=".https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712favicon.ico">
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdnjs.cloudflare.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ajaxhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712libshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712font-awesomehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd837125.15.3https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712csshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712all.min.css" type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712css" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712@holovizhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel@0.13.0https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712csshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712widgets.css" type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712css" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712@holovizhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel@0.13.0https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712csshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712markdown.css" type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712css" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript" src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712tabulator-tables@4.9.3https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712jshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712tabulator.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript" src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.bokeh.orghttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokehhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712releasehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokeh-2.4.2.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript" src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.bokeh.orghttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokehhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712releasehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokeh-widgets-2.4.2.min.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript" src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.bokeh.orghttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokehhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712releasehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bokeh-tables-2.4.2.min.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript" src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712@holovizhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel@0.13.0https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel.min.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script type="texthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712javascript">
    Bokeh.set_log_level("info");
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.jsdelivr.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712npmhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstrap@4.6.1https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712csshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstrap.min.css">
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712@holovizhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel@0.13.0https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bundledhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstraptemplatehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstrap.css">
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712unpkg.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712@holovizhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712panel@0.13.0https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bundledhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712defaultthemehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712default.css">
    <script src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.jsdelivr.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712npmhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712jquery@3.5.1https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712jquery.slim.min.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <script src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712cdn.jsdelivr.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712npmhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstrap@4.6.1https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712disthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712jshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712bootstrap.bundle.min.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <link rel="stylesheet" href="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712alphahttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.css" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
    <script defer src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.nethttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712alphahttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscript.js"><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712head>
    <py-env>
    - bokeh
    - numpy
    - pandas
    - panel
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712py-env>
    <body>
    
    <nav   style="background-color: #000000;">
    <button type="button"  >
     <span ><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712span>
     <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712button>
     
     <a  href="https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712">
     <img src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712465https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712014https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712168233119095196.png" alt="什么?可以在 HTML 中直接插入 Python 代码?" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712>
     <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712a>
     <a  href="" style="color: #f0ab3c;">Panel Streaming Demo<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712a>
     
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712nav>
    
    
    
    
    
    
    
    
    
    
    <py-script>
    import asyncio
    import panel as pn
    import numpy as np
    import pandas as pd
    from bokeh.models import ColumnDataSource
    from bokeh.plotting import figure
    from panel.io.pyodide import show
    df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')).cumsum()
    rollover = pn.widgets.IntInput(name='Rollover', value=15)
    follow = pn.widgets.Checkbox(name='Follow', value=True, align='end')
    
    tabulator = pn.widgets.Tabulator(df, height=450, width=400)
    
    def color_negative_red(val):
    """
    Takes a scalar and returns a string with
    the css property `'color: red'` for negative
    strings, black otherwise.
    """
    color = 'red' if val < 0 else 'green'
    return 'color: %s' % color
    tabulator.style.applymap(color_negative_red)
    p = figure(height=450, width=600)
    cds = ColumnDataSource(data=ColumnDataSource.from_df(df))
    p.line('index', 'A', source=cds, line_color='red')
    p.line('index', 'B', source=cds, line_color='green')
    p.line('index', 'C', source=cds, line_color='blue')
    p.line('index', 'D', source=cds, line_color='purple')
    def stream():
    data = df.iloc[-1] + np.random.randn(4)
    tabulator.stream(data, rollover=rollover.value, follow=follow.value)
    value = {k: [v] for k, v in tabulator.value.iloc[-1].to_dict().items()}
    value['index'] = [tabulator.value.index[-1]]
    cds.stream(value)
    cb = pn.state.add_periodic_callback(stream, 200)
    controls = pn.Row(cb.param.period, rollover, follow, width=400)
    await show(controls, 'controls')
    await show(tabulator, 'table')
    await show(p, 'plot')
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712py-script>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712body>
    <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712html><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre><p >上面的代码在浏览器中打开后就可以直接显示对应的效果了:<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p><p  style="text-align: center;"><img src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712465https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712014https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712168233119361962.gif" alt="什么?可以在 HTML 中直接插入 Python 代码?" https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712><https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p><p >关于 PyScript 的更多使用方法可以查看 Git 仓库示例 https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712github.comhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscripthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscripthttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712treehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712mainhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pyscriptjshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712examples 了解更多。<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p></script></https:>
    </title>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer