Pynecone 是 Python 的全棧 Web 框架嗎?
Python 中的 Web 框架/庫為希望通過組合這些庫提供的不同功能來開發網站應用程序的開發人員提供了良好的基礎。由于其簡單易用,許多開發人員甚至使用 Python 來開發后端網站應用程序。數據科學和機器學習近年來已成為這些網站應用程序的關鍵組成部分。因此,開發人員不斷尋找能夠將這些功能集成到應用程序中的庫。
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 應用程序中的各種組件。
其中的一些關鍵要點包括:
- Pynecone 是一個用于 Python 的全棧 Web 框架。
- 它提供了一個易于使用的API,使得構建應用程序的前端部分變得簡單。
- 使用 Pynecone,可以輕松地在 Python 中添加不同的 ReactJS 庫。
- Pynecone 甚至將在不久的將來通過更好的 Web 框架實現應用程序的部署。

































