Pynecone,一個(gè)神奇的 Python 庫(kù)
Pynecone 是一個(gè)全棧 Python 框架,允許開(kāi)發(fā)者通過(guò)簡(jiǎn)單的 Python 代碼構(gòu)建現(xiàn)代化的 Web 應(yīng)用。

一、核心特點(diǎn)
- 全棧開(kāi)發(fā):后端邏輯和前端 UI 均使用 Python 構(gòu)建,無(wú)需學(xué)習(xí) JavaScript。
- 狀態(tài)管理:支持應(yīng)用狀態(tài)的自動(dòng)同步和更新,狀態(tài)變化后前端會(huì)自動(dòng)重新渲染。
- 組件化開(kāi)發(fā):提供一系列開(kāi)箱即用的 UI 組件(如 button、text、input),并支持嵌套組合。
- 動(dòng)態(tài)交互:通過(guò)事件綁定(如 on_click 和 on_change),輕松實(shí)現(xiàn)動(dòng)態(tài)應(yīng)用。
- 多頁(yè)面支持:通過(guò) add_page 方法,可以為應(yīng)用定義多個(gè)頁(yè)面。
- 部署方便 :提供靜態(tài)導(dǎo)出功能,生成的應(yīng)用可以直接部署到任意靜態(tài)服務(wù)器或平臺(tái)。
二、安裝
pip install pynecone三、示例代碼
讓我們使用 DeepSeek構(gòu)建一個(gè)用于文本生成的用戶(hù)界面。為了簡(jiǎn)單起見(jiàn),我們使用 DeepSeek API,但你可以靈活地將其替換為本地運(yùn)行的機(jī)器學(xué)習(xí)模型。
1. 配置管理
pip install python-dotenv創(chuàng)建.env文件,存儲(chǔ)deepseek的Secret Key
# .env
DEEPSEEK_API_KEY="your_api_key_here"
DEEPSEEK_ENDPOINT=https://api.deepseek.com2. 引用DeepSeek配置
from dotenv import load_dotenv
load_dotenv()3. 初始化項(xiàng)目
執(zhí)行init命令初始化項(xiàng)目:
pc init4. 搭建界面
在生成的reflex1目錄下的文件中操作界面和事件綁定:
def index():
return pc.container(
pc.vstack(
pc.heading("python學(xué)習(xí)助手", size="2xl"),
pc.text_area(
placeholder="請(qǐng)輸入提示詞...",
on_blur=State.set_prompt,
width="100%",
min_height="100px",
),
pc.button(
"提交查詢(xún)",
on_click=State.handle_submit,
is_loading=State.is_loading,
width="100%",
color_scheme="blue",
),
pc.divider(),
pc.cond(
State.error != "",
pc.alert(
pc.alert_icon(),
pc.alert_title(State.error),
status="error",
),
),
pc.cond(
State.response != "",
pc.box(
pc.text("響應(yīng)內(nèi)容:"),
pc.card(
pc.markdown(State.response),
width="100%",
padding="1em",
),
width="100%",
),
),
spacing="1.5em",
width="100%",
max_width="800px",
padding="2em",
),
padding_top="5%",
)5. 綁定事件
通過(guò)openai進(jìn)行模型調(diào)用:
pip install openai按鈕事件handle_submit如下:
class State(pc.State):
prompt: str = ""
response: str = ""
is_loading: bool = False
error: str = ""
asyncdef handle_submit(self):
self.is_loading = True
self.error = ""
try:
client = OpenAI(api_key=os.getenv('DEEPSEEK_API_KEY'), base_url=os.getenv('DEEPSEEK_ENDPOINT'))
role_user = "如何學(xué)習(xí)Python"
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": role_user},
],
stream=False
)
self.response = response.choices[0].message.content
except Exception as e:
self.error = f"請(qǐng)求失敗: {str(e)}"
self.is_loading = False6. 創(chuàng)建應(yīng)用及路由
app = pc.App(state=State)
app.add_page(index, title="python學(xué)習(xí)助手")
app.compile()7. 運(yùn)行及效果
通過(guò)下面命令運(yùn)行程序:
pc run效果如下:





































