Py学习  »  Python

Pynecone 是 Python 的全栈 Web 框架吗?

数据STUDIO • 7 月前 • 169 次点击  


Python 中的 Web 框架/库为希望通过组合这些库提供的不同功能来开发网站应用程序的开发人员提供了良好的基础。由于其简单易用,许多开发人员甚至使用 Python 来开发后端网站应用程序。数据科学和机器学习近年来已成为这些网站应用程序的关键组成部分。因此,开发人员不断寻找能够将这些功能集成到应用程序中的库。

Pynecone - a Hugging Face Space by chansung

Python 中流行的库包括 Flask 和 Django。Django 用于构建大型应用程序。而 Flask 则适用于轻量级应用程序。但这些应用程序通常充当后端,开发人员必须分别编写网站的 HTML、CSS 和 JavaScript。这时,Streamlit 和 Pynecone 等新库应运而生,它们允许开发人员直接通过 Python 创建功能齐全的全栈应用程序,而无需 HTML、CSS 或 JavaScript 文件。

在本文中,云朵君将和大家一起讨论一个名为 Pynecone 的库,它相对较新,并且日益受到欢迎。

Pynecone 是什么?

为什么要创建一个新的 Web 框架?

Pinecone 是一个灵活的全栈库,用于构建和部署高度可扩展的网站应用程序。那么,为什么选择 Pynecone 呢?它与其他框架有何不同?Pinecone 的创建初衷是让 Python 应用于一切。除了 Python 之外,开发全栈网站无需学习其他语言。Pynecone 是该 Web 框架的全新成员,它包含许多实用功能,可帮助你轻松构建从小型数据科学应用程序到大型、高度可扩展的多页面网站。

此外,Pynecone 与之前的库一样非常灵活。Pynecone 是一个对初学者友好的框架,但足以应对复杂的用例开发和部署。Pynecone 负责从前端到后端再到应用程序部署的所有工作。Pynecone 旨在简化从零开始构建整个网站到完全通过 Python 部署应用程序的流程,无需学习和编写前端语言。

Pynecone 应用

1. 部署基于 Web 的机器学习应用程序

Pynecone 适用于基于 Web 的机器学习应用程序的前端和后端。它集成了一个数据库,有助于存储预测标签和其他相关数据。该数据库甚至可以用来存储模型参数,以便模型可以加载其参数并进行预测。

2. 在数据科学领域,构建可视化仪表板

在处理数据科学时,可视化至关重要。它能够展现业务运营状况、供应链维护情况以及应用程序的运行情况。借助 Pynecone,你可以使用其中提供的图表组件简化这些可视化仪表板的制作。

3. 在短时间内构建网站原型

构建原型并将其呈现给客户时,时间至关重要。构建速度越快,获得反馈的速度就越快,做出相应修改的速度也就越快。Pynecone 最适合快速构建轻量级应用程序,例如商业原型。

4. 在创建和部署大型应用程序时

如上所述,Pynecone 在构建轻量级数据科学应用程序方面非常方便。但它并不回避构建更大型的应用程序。由于 Pynecone 能够轻松地将 React 组件与 Python 集成,因此它非常有能力构建大型多页网站。

入门 – 安装 Pynecone

要安装 Pynecone,Python版本必须为 3.7 及以上,NodeJS 版本必须为 12.22.0 及以上。你可以从其官方网站下载最新的 NodeJS 。下载 NodeJS 并不意味着我们将编写 JavaScript 代码;它只是安装 Pynecone 的先决条件。确保环境正确后,我们可以继续使用pip命令安装 Pynecone。

$ pip install pynecone复制代码

这将安装 Pynecone 库及其依赖的一些依赖项。

创建一个 Pynecone 项目

在本节中,我们将学习如何创建一个新的 Pynecone 项目。现在打开 CMD 创建一个新目录;我们将其命名为 pyne_project。现在让我们进入pyne_project目录并调用命令 pc init

$ mkdir pyne_project
$ cd pyne_project
$ pc init

安装 Pynecone 时,pc 命令行工具也会随之安装;此工具用于创建和运行新项目。pc init 命令将通过创建一些文件和目录来创建一个新的 Pynecone 项目,如下所示(我在 VS Code 中打开了 pyne_project)。



我们看到pc init创建了类似pyne_project的文件夹(与我们创建的文件夹名称类似),以及类似 pcconfig.py、pyne_project.py(此处 .py 文件名与我们创建的文件夹名称类似)等文件。Assets 文件夹存储了我们网站的所有静态文件,例如我们想要在网站上显示的图片。.web 文件是 Pynecone 前端编译为 NextJS 应用的地方。pcconfig.py 包含我们应用程序的配置。

我们不必担心这些文件;我们唯一要编辑的文件是pyne_project 文件夹中的pyne_project.py。基本上,我们创建了一个名为 pyne_project 的文件夹并调用了pc init,这又创建了另一个名为 pyne_project 的文件夹和一个名为 pyne_project.py 的文件,我们将对其进行处理。pyne_project.py 中已经包含一些演示代码,因此现在,在 CMD 中输入以下命令来运行我们的演示网站。

$ pc run

这将运行代码,首次在新项目中使用此命令pc run时,可能需要等待一段时间。现在我们可以从 localhost:3000 访问网站了。



我们可以看到,网页告诉我们编辑位于pyne_project文件夹中的pyne_project.py ,该文件是使用pc init创建的。按ctrl + c停止服务器。

构建一个简单的 Web 应用程序 – 乘法和除法

在本节中,我们将从头开始创建一个新网站,并了解构建应用程序所需的所有步骤。我们将要创建的网站是一个简单的应用程序,它包含两个按钮,一个是“乘法”,点击按钮时会将数字乘以 2;另一个是“除法”,按下按钮时会将数字除以 2。

我们首先要创建的是一个名为State的类。这个类包含了应用程序中所有可能更改的变量,我们甚至在类本身中定义了更改这些变量的函数。我们来看下面的示例代码:

import pynecone as pc
class State(pc.State):
    starting_value =  1
    def multiply(self):
        self.starting_value *= 2
    def divide(self):
        self.starting_value /= 2

这里我们定义了一个继承自pc.State 的类。当我们创建一个将数字除以 2 和乘以 2 的应用程序时,我们需要为这个数字设置一个起始值。因此,在上面的代码中,我们定义了一个变量starting_value,并将其值设置为 1。我们甚至定义了函数multiply和divide, 它们会改变名为starting_value的变量的值,即,将其乘以 2 或除以 2。

事件处理程序 (Event Handlers)识别这些乘法和除法函数。事件处理程序是编辑Pynecone 应用程序中状态(及其变量)的唯一可能方法。它们响应用户操作而调用;当用户点击“乘法”按钮时,此乘法函数将被激活。这些操作称为事件。这就是我们创建此类的方式,我们在其中定义应用程序将使用的所有变量以及将更改这些变量的函数。

现在我们将编写应用程序的前端部分,创建用于乘法和除法的按钮,甚至在浏览器中显示这个starting_value。所有这些都将使用 Python 中的 Pynecone 库本身完成。为了编写应用程序的前端部分,我们将创建一个名为 index 的函数,并在其中编写前端部分。以下是我们应用程序前端的代码:




    
def index():
    return pc.hstack(
        pc.button(
            "Multiply",
            color_scheme="blue",
            border_radius="1em",
            on_click=State.multiply,
        ),
        pc.text(State.starting_value , font_size="2em"),
        pc.button(
            "Divide",
            color_scheme="red",
            border_radius="1em",
            on_click=State.divide,
        ),
    )

我们使用的第一个函数是Pynecone 的hstack()函数。 hstack()函数允许我们创建按钮并将其水平放置。对于垂直放置,我们将使用vstack()函数。

为了创建按钮,我们使用了Pynecone 的button() 函数。该函数中使用的参数不言自明,即第一个参数是按钮名称(在我们的例子中是“Multiply”“Divide”),接下来是 color_scheme   它定义了按钮的颜色,然后是border_radius,它规定了边框的弯曲程度。

最后一个参数是on_click,它决定在单击相应按钮时调用哪个函数/采取什么操作。对于Multiply按钮,on_click设置为乘法函数(在我们创建的类中定义的乘法函数),对于Divide按钮,它设置为除法函数。

Pynecone 中的text()用于显示 starting_value 的值。所有这些函数 hstack()button() text()都被称为构建前端的组件。我们的乘法和除法网站即将完成。为了使网站运行,我们需要定义路由和编译,具体操作如下:

app = pc.App(state=State)
app.add_page(index)
app.compile()

首先,我们在pc.App()函数中定义要使用的状态。由于我们只有一个状态,因此我们将其传递给 pc.App() 中的变量。接下来是我们的根 URL,也就是我们的主页,这将是 index,因为在 index() 函数中,我们定义了应用程序的前端,因此我们将函数名(即 index)传递给 app.add_page()。最后,我们使用 app.compile() 编译应用程序。

测试 – 乘法和除法应用程序

这里我们将运行应用程序并确保其正常运行。最终,我们编写了所有代码并为应用程序创建了前端。现在,使用命令 pc run 来运行网站。



我们可以看到网站正在成功运行。有两个按钮,分别是“乘”“除”, 在这两个按钮之间,我们看到了变量starting_value的值,该变量是在我们创建的类中定义的。点击“乘”三次后,我们得到以下输出。



点击除法 5 次后,我们得到以下输出



至此,我们简单的乘法和除法应用已经完美运行。要更改应用名称,我们可以在app.add_page()中添加一个名为 title 的参数,并将其赋值为网站名称。

app.add_page(index, title="Multiply and Divide App")

通过更改标题,我们可以更改我们网站的应用程序名称,现在当我们重新加载页面时,名称就会更改

构建一个简单的 Web 应用程序 - 使用 Pynecone 进行乘法和除法 | 全栈

Pynecone 有何不同?

Pynecone 是一个相对较新的 Web 框架,旨在完全使用 Python 构建应用程序。Flask 是用于用 Python 构建网站的热门库之一。Flask 主要用于应用程序的后端,开发人员需要编写前端代码。Pynecone 的不同之处在于它甚至可以用 Python 编写网站的前端部分,从而减少了学习 HTML、CSS 和 JavaScript 的开销。

Pynecone 与 Flask 和 Django 等其他库的另一个区别是,Pynecone 将整个代码编译成 NextJS/ReactJS 应用程序,这将非常有益,因为这样一来,React 库可以在数小时内在 Python 中组合完成,而其他库则需要更长的时间。Pynecone 附带 50 多个组件,因此提供了足够的组件来轻松构建数据科学应用程序。

写在最后

在本文中,我们介绍了一个名为 Pynecone 的全新 Web 框架,它可以通过 Python 构建从前端到后端的完整网站。未来,Pynecone 甚至能够部署这些基于网站的应用程序。我们还学习了如何安装和开始使用 Pynecone 的演示。此外,我们还研究了项目格式以及 Pynecone 应用程序中的各种组件。

其中的一些关键要点包括:

  1. Pynecone 是一个用于 Python 的全栈 Web 框架。
  2. 它提供了一个易于使用的API,使得构建应用程序的前端部分变得简单。
  3. 使用 Pynecone,可以轻松地在 Python 中添加不同的 ReactJS 库。
  4. Pynecone 甚至将在不久的将来通过更好的 Web 框架实现应用程序的部署。

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉 PythonMySQL数据分析数据可视化 机器学习与数据挖掘爬虫 等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187104