Streamlit + GitHub 如何變成 Web App

更新 發佈閱讀 8 分鐘

1. 先理解整體架構

當你看到一個 Streamlit 網頁 App(例如部署在 Streamlit Community Cloud),其實背後流程是:

使用者瀏覽器

HTTP Request

Streamlit Server (雲端)

│ 讀取

GitHub Repository

│ Python 程式

Streamlit Runtime


生成 Web UI

簡單說:

GitHub = 程式碼倉庫

Streamlit = UI框架 + Web Server

Cloud = 執行環境


2. 整個流程怎麼實現

假設你要做一個 資料分析 Web App

Step1:寫一個 Streamlit Python 程式

例如:

import streamlit as st
import pandas as pd

st.title("My Data App")

file = st.file_uploader("Upload CSV")

if file:
df = pd.read_csv(file)
st.write(df)

Streamlit 做了幾件事:

1️⃣ 建立 Web Server

2️⃣ 把 Python UI 轉成 HTML

3️⃣ 用 WebSocket 與前端同步


3. 把程式放到 GitHub

例如:

Repository

my-streamlit-app

├── app.py
├── requirements.txt

requirements.txt

streamlit
pandas

GitHub 只是 存放程式碼

常用平台:

  • GitHub
  • GitLab

4. Streamlit Cloud 連動 GitHub

當你在

Streamlit Community Cloud

raw-image


建立 App 時

你會:

1️⃣ 登入 GitHub

2️⃣ 選擇 repo

3️⃣ 選擇 app.py


Streamlit 會做:

Clone GitHub Repo

建立 Python Environment

pip install requirements.txt

執行 streamlit run app.py

建立 Web Server

所以 GitHub 其實只是程式來源


5. 真正的底層邏輯

很多人以為 Streamlit 是把 Python 轉 HTML

其實不是。

它是:

Python Backend
+
React Frontend
+
WebSocket Sync

架構:

Browser

│ WebSocket

Streamlit Server


Python Script

核心技術:

技術用途Python寫程式ReactUIWebSocket即時同步TornadoWeb server

Streamlit 的 Server 是基於

Tornado Web Server


6. Streamlit 的「重新執行」機制

Streamlit 有一個很特別的設計:

整個 script 每次互動都會重新執行

例如:

x = st.slider("number")
st.write(x)

流程:

User拖動slider


Frontend event


WebSocket傳給Backend


重新執行Python Script


更新UI

所以 Streamlit 的程式其實像:

UI = Python Script 的輸出

不是 MVC。


7. GitHub 自動更新機制

當你 push code:

git push

Streamlit Cloud 會:

GitHub webhook


偵測到 repo 更新


重新 build


重新部署 App

流程:

Developer

git push


GitHub

webhook

Streamlit Cloud

Rebuild

Web App 更新

8. Streamlit App 的實際運作流程

當使用者開啟網站:

User打開網址


HTTP Request


Streamlit Server


執行 Python Script


生成 UI JSON


React 前端 render

互動時:

UI操作


WebSocket


Python重新執行


更新UI

9. GitHub + Streamlit 的完整架構

整體:

Developer


GitHub Repo


Streamlit Cloud


Docker Environment


Python Runtime


Web Server


User Browser

10. 一個完整範例專案

專案結構:

streamlit-demo

├── app.py
├── requirements.txt
├── data
│ └── sample.csv

app.py

import streamlit as st
import pandas as pd

st.title("Sales Dashboard")

df = pd.read_csv("data/sample.csv")

st.bar_chart(df["sales"])

requirements.txt

streamlit
pandas

部署:

1️⃣ push 到 GitHub

2️⃣ Streamlit Cloud connect repo

3️⃣ deploy

網址就會變成:

https://xxx.streamlit.app
留言
avatar-img
螃蟹_crab的沙龍
162會員
320內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/11/20
在 Python 使用 Matplotlib 畫圖時,最常遇到的問題就是: 中文無法顯示,變成方框或亂碼。 尤其當你要畫圖表並添加標題、座標軸名稱等中文時,常會看到: □ □ □ □ 或 � � � → 非常影響閱讀。 本篇教學帶你: 自動尋找系統中可用的中文字體(Windows / Ma
Thumbnail
2025/11/20
在 Python 使用 Matplotlib 畫圖時,最常遇到的問題就是: 中文無法顯示,變成方框或亂碼。 尤其當你要畫圖表並添加標題、座標軸名稱等中文時,常會看到: □ □ □ □ 或 � � � → 非常影響閱讀。 本篇教學帶你: 自動尋找系統中可用的中文字體(Windows / Ma
Thumbnail
2025/07/29
在資料視覺化專案中,如果你需要在網頁上呈現大量項目,例如圖片、紀錄、分析結果,一次性載入所有內容可能會讓使用者介面卡頓或混亂。 本篇教學會引導你如何使用 Python 的 Dash 框架,製作一個具有「分頁功能」的網頁應用,讓使用者可以滑動頁面選擇器 (Slider) 分頁檢視資料。 🧩 功
Thumbnail
2025/07/29
在資料視覺化專案中,如果你需要在網頁上呈現大量項目,例如圖片、紀錄、分析結果,一次性載入所有內容可能會讓使用者介面卡頓或混亂。 本篇教學會引導你如何使用 Python 的 Dash 框架,製作一個具有「分頁功能」的網頁應用,讓使用者可以滑動頁面選擇器 (Slider) 分頁檢視資料。 🧩 功
Thumbnail
2025/07/17
Dash 是由 Plotly 所開發的 Python Web 應用框架,用來快速建構互動式資料視覺化應用。dcc.Graph 是 Dash 中的核心元件之一,用來顯示圖表(基於 Plotly 的視覺化功能),支援互動操作如滑鼠移動、點擊、縮放等。 📌 什麼是 dcc.Graph? dcc.G
Thumbnail
2025/07/17
Dash 是由 Plotly 所開發的 Python Web 應用框架,用來快速建構互動式資料視覺化應用。dcc.Graph 是 Dash 中的核心元件之一,用來顯示圖表(基於 Plotly 的視覺化功能),支援互動操作如滑鼠移動、點擊、縮放等。 📌 什麼是 dcc.Graph? dcc.G
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
🔗 StockRevenueLab 資源傳送門 🚀 立即開啟:StockRevenueLab 線上儀表板 (無需安裝,點擊即可直接操作互動圖表) 📂 GitHub 完整專案原始碼 (包含 app.py 核心邏輯與所有環境設定檔) 🐍 Google Colab 自動化抓取程式碼 (一鍵開
Thumbnail
🔗 StockRevenueLab 資源傳送門 🚀 立即開啟:StockRevenueLab 線上儀表板 (無需安裝,點擊即可直接操作互動圖表) 📂 GitHub 完整專案原始碼 (包含 app.py 核心邏輯與所有環境設定檔) 🐍 Google Colab 自動化抓取程式碼 (一鍵開
Thumbnail
在開始使用 Alpha-Data-Cleaning-Lab 之前,我們需要先準備好它的「大腦」(AI Token)以及「實驗室環境」(Streamlit)。以下是詳細的設定步驟: 1. 取得 AI 的大腦:申請 API Token 這個專案支援多種 AI 模型,你可以根據需求選擇 OpenAI
Thumbnail
在開始使用 Alpha-Data-Cleaning-Lab 之前,我們需要先準備好它的「大腦」(AI Token)以及「實驗室環境」(Streamlit)。以下是詳細的設定步驟: 1. 取得 AI 的大腦:申請 API Token 這個專案支援多種 AI 模型,你可以根據需求選擇 OpenAI
Thumbnail
分享如何將個人專案「美股智能投顧」從基於 Streamlit + Google Sheets 的初版,透過引入 Firebase、雙模型驗證、持續陪伴功能、以及雲端原生部署,徹底升級為一個穩定、安全、專業且具備持續成長潛力的產品。
Thumbnail
分享如何將個人專案「美股智能投顧」從基於 Streamlit + Google Sheets 的初版,透過引入 Firebase、雙模型驗證、持續陪伴功能、以及雲端原生部署,徹底升級為一個穩定、安全、專業且具備持續成長潛力的產品。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News