Pynecone 是 Python 的全棧 Web 框架嗎?
Python 中的 Web 框架/庫(kù)為希望通過組合這些庫(kù)提供的不同功能來開發(fā)網(wǎng)站應(yīng)用程序的開發(fā)人員提供了良好的基礎(chǔ)。由于其簡(jiǎn)單易用,許多開發(fā)人員甚至使用 Python 來開發(fā)后端網(wǎng)站應(yīng)用程序。數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)近年來已成為這些網(wǎng)站應(yīng)用程序的關(guān)鍵組成部分。因此,開發(fā)人員不斷尋找能夠?qū)⑦@些功能集成到應(yīng)用程序中的庫(kù)。
Python 中流行的庫(kù)包括 Flask 和 Django。Django 用于構(gòu)建大型應(yīng)用程序。而 Flask 則適用于輕量級(jí)應(yīng)用程序。但這些應(yīng)用程序通常充當(dāng)后端,開發(fā)人員必須分別編寫網(wǎng)站的 HTML、CSS 和 JavaScript。這時(shí),Streamlit 和 Pynecone 等新庫(kù)應(yīng)運(yùn)而生,它們?cè)试S開發(fā)人員直接通過 Python 創(chuàng)建功能齊全的全棧應(yīng)用程序,而無需 HTML、CSS 或 JavaScript 文件。
在本文中,云朵君將和大家一起討論一個(gè)名為 Pynecone 的庫(kù),它相對(duì)較新,并且日益受到歡迎。
Pynecone 是什么?
為什么要?jiǎng)?chuàng)建一個(gè)新的 Web 框架?
Pinecone 是一個(gè)靈活的全棧庫(kù),用于構(gòu)建和部署高度可擴(kuò)展的網(wǎng)站應(yīng)用程序。那么,為什么選擇 Pynecone 呢?它與其他框架有何不同?Pinecone 的創(chuàng)建初衷是讓 Python 應(yīng)用于一切。除了 Python 之外,開發(fā)全棧網(wǎng)站無需學(xué)習(xí)其他語言。Pynecone 是該 Web 框架的全新成員,它包含許多實(shí)用功能,可幫助你輕松構(gòu)建從小型數(shù)據(jù)科學(xué)應(yīng)用程序到大型、高度可擴(kuò)展的多頁面網(wǎng)站。
此外,Pynecone 與之前的庫(kù)一樣非常靈活。Pynecone 是一個(gè)對(duì)初學(xué)者友好的框架,但足以應(yīng)對(duì)復(fù)雜的用例開發(fā)和部署。Pynecone 負(fù)責(zé)從前端到后端再到應(yīng)用程序部署的所有工作。Pynecone 旨在簡(jiǎn)化從零開始構(gòu)建整個(gè)網(wǎng)站到完全通過 Python 部署應(yīng)用程序的流程,無需學(xué)習(xí)和編寫前端語言。
Pynecone 應(yīng)用
1. 部署基于 Web 的機(jī)器學(xué)習(xí)應(yīng)用程序
Pynecone 適用于基于 Web 的機(jī)器學(xué)習(xí)應(yīng)用程序的前端和后端。它集成了一個(gè)數(shù)據(jù)庫(kù),有助于存儲(chǔ)預(yù)測(cè)標(biāo)簽和其他相關(guān)數(shù)據(jù)。該數(shù)據(jù)庫(kù)甚至可以用來存儲(chǔ)模型參數(shù),以便模型可以加載其參數(shù)并進(jìn)行預(yù)測(cè)。
2. 在數(shù)據(jù)科學(xué)領(lǐng)域,構(gòu)建可視化儀表板
在處理數(shù)據(jù)科學(xué)時(shí),可視化至關(guān)重要。它能夠展現(xiàn)業(yè)務(wù)運(yùn)營(yíng)狀況、供應(yīng)鏈維護(hù)情況以及應(yīng)用程序的運(yùn)行情況。借助 Pynecone,你可以使用其中提供的圖表組件簡(jiǎn)化這些可視化儀表板的制作。
3. 在短時(shí)間內(nèi)構(gòu)建網(wǎng)站原型
構(gòu)建原型并將其呈現(xiàn)給客戶時(shí),時(shí)間至關(guān)重要。構(gòu)建速度越快,獲得反饋的速度就越快,做出相應(yīng)修改的速度也就越快。Pynecone 最適合快速構(gòu)建輕量級(jí)應(yīng)用程序,例如商業(yè)原型。
4. 在創(chuàng)建和部署大型應(yīng)用程序時(shí)
如上所述,Pynecone 在構(gòu)建輕量級(jí)數(shù)據(jù)科學(xué)應(yīng)用程序方面非常方便。但它并不回避構(gòu)建更大型的應(yīng)用程序。由于 Pynecone 能夠輕松地將 React 組件與 Python 集成,因此它非常有能力構(gòu)建大型多頁網(wǎng)站。
入門 – 安裝 Pynecone
要安裝 Pynecone,Python版本必須為 3.7 及以上,NodeJS 版本必須為 12.22.0 及以上。你可以從其官方網(wǎng)站下載最新的 NodeJS 。下載 NodeJS 并不意味著我們將編寫 JavaScript 代碼;它只是安裝 Pynecone 的先決條件。確保環(huán)境正確后,我們可以繼續(xù)使用pip命令安裝 Pynecone。
$ pip install pynecone復(fù)制代碼這將安裝 Pynecone 庫(kù)及其依賴的一些依賴項(xiàng)。
創(chuàng)建一個(gè) Pynecone 項(xiàng)目
在本節(jié)中,我們將學(xué)習(xí)如何創(chuàng)建一個(gè)新的 Pynecone 項(xiàng)目?,F(xiàn)在打開 CMD 創(chuàng)建一個(gè)新目錄;我們將其命名為 pyne_project?,F(xiàn)在讓我們進(jìn)入pyne_project目錄并調(diào)用命令pc init。
$ mkdir pyne_project
$ cd pyne_project
$ pc init安裝 Pynecone 時(shí),pc 命令行工具也會(huì)隨之安裝;此工具用于創(chuàng)建和運(yùn)行新項(xiàng)目。pc init 命令將通過創(chuàng)建一些文件和目錄來創(chuàng)建一個(gè)新的 Pynecone 項(xiàng)目,如下所示(我在 VS Code 中打開了 pyne_project)。
圖片
我們看到pc init創(chuàng)建了類似pyne_project的文件夾(與我們創(chuàng)建的文件夾名稱類似),以及類似 pcconfig.py、pyne_project.py(此處 .py 文件名與我們創(chuàng)建的文件夾名稱類似)等文件。Assets 文件夾存儲(chǔ)了我們網(wǎng)站的所有靜態(tài)文件,例如我們想要在網(wǎng)站上顯示的圖片。.web 文件是 Pynecone 前端編譯為 NextJS 應(yīng)用的地方。pcconfig.py 包含我們應(yīng)用程序的配置。
我們不必?fù)?dān)心這些文件;我們唯一要編輯的文件是pyne_project 文件夾中的pyne_project.py?;旧希覀儎?chuàng)建了一個(gè)名為 pyne_project 的文件夾并調(diào)用了pc init,這又創(chuàng)建了另一個(gè)名為 pyne_project 的文件夾和一個(gè)名為 pyne_project.py 的文件,我們將對(duì)其進(jìn)行處理。pyne_project.py 中已經(jīng)包含一些演示代碼,因此現(xiàn)在,在 CMD 中輸入以下命令來運(yùn)行我們的演示網(wǎng)站。
$ pc run這將運(yùn)行代碼,首次在新項(xiàng)目中使用此命令pc run時(shí),可能需要等待一段時(shí)間?,F(xiàn)在我們可以從 localhost:3000 訪問網(wǎng)站了。
圖片
我們可以看到,網(wǎng)頁告訴我們編輯位于pyne_project文件夾中的pyne_project.py ,該文件是使用pc init創(chuàng)建的。按ctrl + c停止服務(wù)器。
構(gòu)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用程序 – 乘法和除法
在本節(jié)中,我們將從頭開始創(chuàng)建一個(gè)新網(wǎng)站,并了解構(gòu)建應(yīng)用程序所需的所有步驟。我們將要?jiǎng)?chuàng)建的網(wǎng)站是一個(gè)簡(jiǎn)單的應(yīng)用程序,它包含兩個(gè)按鈕,一個(gè)是“乘法”,點(diǎn)擊按鈕時(shí)會(huì)將數(shù)字乘以 2;另一個(gè)是“除法”,按下按鈕時(shí)會(huì)將數(shù)字除以 2。
我們首先要?jiǎng)?chuàng)建的是一個(gè)名為State的類。這個(gè)類包含了應(yīng)用程序中所有可能更改的變量,我們甚至在類本身中定義了更改這些變量的函數(shù)。我們來看下面的示例代碼:
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這里我們定義了一個(gè)繼承自pc.State 的類。當(dāng)我們創(chuàng)建一個(gè)將數(shù)字除以 2 和乘以 2 的應(yīng)用程序時(shí),我們需要為這個(gè)數(shù)字設(shè)置一個(gè)起始值。因此,在上面的代碼中,我們定義了一個(gè)變量starting_value,并將其值設(shè)置為 1。我們甚至定義了函數(shù)multiply和divide, 它們會(huì)改變名為starting_value的變量的值,即,將其乘以 2 或除以 2。
事件處理程序 (Event Handlers)識(shí)別這些乘法和除法函數(shù)。事件處理程序是編輯Pynecone 應(yīng)用程序中狀態(tài)(及其變量)的唯一可能方法。它們響應(yīng)用戶操作而調(diào)用;當(dāng)用戶點(diǎn)擊“乘法”按鈕時(shí),此乘法函數(shù)將被激活。這些操作稱為事件。這就是我們創(chuàng)建此類的方式,我們?cè)谄渲卸x應(yīng)用程序?qū)⑹褂玫乃凶兞恳约皩⒏倪@些變量的函數(shù)。
現(xiàn)在我們將編寫應(yīng)用程序的前端部分,創(chuàng)建用于乘法和除法的按鈕,甚至在瀏覽器中顯示這個(gè)starting_value。所有這些都將使用 Python 中的 Pynecone 庫(kù)本身完成。為了編寫應(yīng)用程序的前端部分,我們將創(chuàng)建一個(gè)名為 index 的函數(shù),并在其中編寫前端部分。以下是我們應(yīng)用程序前端的代碼:
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,
),
)我們使用的第一個(gè)函數(shù)是Pynecone 的hstack()函數(shù)。 hstack()函數(shù)允許我們創(chuàng)建按鈕并將其水平放置。對(duì)于垂直放置,我們將使用vstack()函數(shù)。
為了創(chuàng)建按鈕,我們使用了Pynecone 的button() 函數(shù)。該函數(shù)中使用的參數(shù)不言自明,即第一個(gè)參數(shù)是按鈕名稱(在我們的例子中是“Multiply”和“Divide”),接下來是 color_scheme , 它定義了按鈕的顏色,然后是border_radius,它規(guī)定了邊框的彎曲程度。
最后一個(gè)參數(shù)是on_click,它決定在單擊相應(yīng)按鈕時(shí)調(diào)用哪個(gè)函數(shù)/采取什么操作。對(duì)于Multiply按鈕,on_click設(shè)置為乘法函數(shù)(在我們創(chuàng)建的類中定義的乘法函數(shù)),對(duì)于Divide按鈕,它設(shè)置為除法函數(shù)。
Pynecone 中的text()用于顯示 starting_value 的值。所有這些函數(shù) hstack()、button()和text()都被稱為構(gòu)建前端的組件。我們的乘法和除法網(wǎng)站即將完成。為了使網(wǎng)站運(yùn)行,我們需要定義路由和編譯,具體操作如下:
app = pc.App(state=State)
app.add_page(index)
app.compile()首先,我們?cè)趐c.App()函數(shù)中定義要使用的狀態(tài)。由于我們只有一個(gè)狀態(tài),因此我們將其傳遞給 pc.App() 中的變量。接下來是我們的根 URL,也就是我們的主頁,這將是 index,因?yàn)樵?nbsp;index() 函數(shù)中,我們定義了應(yīng)用程序的前端,因此我們將函數(shù)名(即 index)傳遞給 app.add_page()。最后,我們使用 app.compile() 編譯應(yīng)用程序。
測(cè)試 – 乘法和除法應(yīng)用程序
這里我們將運(yùn)行應(yīng)用程序并確保其正常運(yùn)行。最終,我們編寫了所有代碼并為應(yīng)用程序創(chuàng)建了前端?,F(xiàn)在,使用命令 pc run 來運(yùn)行網(wǎng)站。
圖片
我們可以看到網(wǎng)站正在成功運(yùn)行。有兩個(gè)按鈕,分別是“乘”和“除”, 在這兩個(gè)按鈕之間,我們看到了變量starting_value的值,該變量是在我們創(chuàng)建的類中定義的。點(diǎn)擊“乘”三次后,我們得到以下輸出。
圖片
點(diǎn)擊除法 5 次后,我們得到以下輸出。
圖片
至此,我們簡(jiǎn)單的乘法和除法應(yīng)用已經(jīng)完美運(yùn)行。要更改應(yīng)用名稱,我們可以在app.add_page()中添加一個(gè)名為 title 的參數(shù),并將其賦值為網(wǎng)站名稱。
app.add_page(index, title="Multiply and Divide App")通過更改標(biāo)題,我們可以更改我們網(wǎng)站的應(yīng)用程序名稱,現(xiàn)在當(dāng)我們重新加載頁面時(shí),名稱就會(huì)更改。
圖片
構(gòu)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用程序 - 使用 Pynecone 進(jìn)行乘法和除法 | 全棧
Pynecone 有何不同?
Pynecone 是一個(gè)相對(duì)較新的 Web 框架,旨在完全使用 Python 構(gòu)建應(yīng)用程序。Flask 是用于用 Python 構(gòu)建網(wǎng)站的熱門庫(kù)之一。Flask 主要用于應(yīng)用程序的后端,開發(fā)人員需要編寫前端代碼。Pynecone 的不同之處在于它甚至可以用 Python 編寫網(wǎng)站的前端部分,從而減少了學(xué)習(xí) HTML、CSS 和 JavaScript 的開銷。
Pynecone 與 Flask 和 Django 等其他庫(kù)的另一個(gè)區(qū)別是,Pynecone 將整個(gè)代碼編譯成 NextJS/ReactJS 應(yīng)用程序,這將非常有益,因?yàn)檫@樣一來,React 庫(kù)可以在數(shù)小時(shí)內(nèi)在 Python 中組合完成,而其他庫(kù)則需要更長(zhǎng)的時(shí)間。Pynecone 附帶 50 多個(gè)組件,因此提供了足夠的組件來輕松構(gòu)建數(shù)據(jù)科學(xué)應(yīng)用程序。
寫在最后
在本文中,我們介紹了一個(gè)名為 Pynecone 的全新 Web 框架,它可以通過 Python 構(gòu)建從前端到后端的完整網(wǎng)站。未來,Pynecone 甚至能夠部署這些基于網(wǎng)站的應(yīng)用程序。我們還學(xué)習(xí)了如何安裝和開始使用 Pynecone 的演示。此外,我們還研究了項(xiàng)目格式以及 Pynecone 應(yīng)用程序中的各種組件。
其中的一些關(guān)鍵要點(diǎn)包括:
- Pynecone 是一個(gè)用于 Python 的全棧 Web 框架。
- 它提供了一個(gè)易于使用的API,使得構(gòu)建應(yīng)用程序的前端部分變得簡(jiǎn)單。
- 使用 Pynecone,可以輕松地在 Python 中添加不同的 ReactJS 庫(kù)。
- Pynecone 甚至將在不久的將來通過更好的 Web 框架實(shí)現(xiàn)應(yīng)用程序的部署。

































