[Project] Streamlit

Yumya's recordยท2025๋…„ 3์›” 20์ผ

SKALA

๋ชฉ๋ก ๋ณด๊ธฐ
11/25
post-thumbnail

๐Ÿฆ– ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•œ Streamlit ์ •๋ฆฌ ๐Ÿฆ–

๋‹จ๊ธฐ๊ฐ„์— ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด Streamlit์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ Streamlit์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

Streamlit

python ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ Data Science ๋ฐ Machine Learning Model์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , ๋™์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ฉด ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

Install

๋ฏธ๋ฆฌ ๊ตฌ์ถ•ํ•ด๋‘” ๋ฏธ๋‹ˆ์ฝ˜๋‹ค์˜ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ streamlit์„ ์„ค์น˜ํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค.

pip install streamlit

streamlit์ด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. ํŒŒ์ด์ฌ ๋ฒ„์ „ 3.8 ~ 3.11์—์„œ ์„ค์น˜ ๊ฐ€๋Šฅํ•˜๋‹ค.

python -V

ํŒŒ์ด์ฌ ๋ฒ„์ „์€ ์œ„ ๋ช…๋ น๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

streamlit hello

streamlit์ด ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด ์œ„ ๋ช…๋ น๋ฌธ์„ ์ž…๋ ฅํ•ด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

pip install --upgrade streamlit

๋˜, streamlit์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ๋’ค ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

Run

streamlit run <py_file>

ํŒŒ์ด์ฌ ํŒŒ์ผ์„ streamlit์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๊ตฌํ˜„๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ๋ฒ•

import streamlit as st

streamlit์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” import ํ•ด์•ผํ•œ๋‹ค.

Write

Title

st.title(<content>)
st.header(<content>)

Subheader

st.subheader(<content>)

Text

st.text(<content>) // ๋‹จ์ˆœ ํ…์ŠคํŠธ
st.write(<content>) // ๋‹จ์ˆœ ํ…์ŠคํŠธ, ๋งˆํฌ๋‹ค์šด ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์ถœ๋ ฅ
st.markdown(<content> // ๋งˆํฌ๋‹ค์šด ์ง€์›

Widget

Button

st.button(<button_name>)

if st.button(<button_name>):
	...  // button์ด ๋ˆŒ๋ ธ์„ ๋•Œ์˜ ๋™์ž‘ ์ •์˜

Radio

st.radio(<radio_name>, (<options>))


ex.
select_items = st.radio("example", ("value1", "value2", "value3"))

// select_imtes๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ •์˜
if select_items == "value1": 
	st.write("select value1")
elif select_items == "value2":
	st.write("select value2")
else:
	st.write("select value3")
st.sidebar.selectbox('<bar_name>`, (<values>))


ex.
selectbox = st.sidebar.selectbox('์˜ˆ์‹œ ๋ฐ•์Šค', ('A', 'B', 'C'))
col1, col2, col3 = st.beta_columns(3) // ๋ ˆ์ด์•„์›ƒ ๋‚˜๋ˆ„๊ธฐ

// ์—ด ์ •์˜
with col1:
	...

with col2:
	...

with col3:
	...

Deployment

Github๋ฅผ ์‚ฌ์šฉํ•ด public ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ , ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. git์— pushํ•˜๋ฉด ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ์ ์šฉํ•˜๊ณ , ์žฌ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ข‹์•˜๋‹ค.


์ด๋ฏธ์ง€ ์ถœ์ฒ˜
์ฐธ๊ณ -streamlit๊ณผ python_version
์ฐธ๊ณ -streamlit ์„ค์น˜
์ฐธ๊ณ -streamlit ๋ฌธ๋ฒ•

profile
๐Ÿ€ ูฉ(หŠแ—œห‹*)ูˆ ๐Ÿ€

0๊ฐœ์˜ ๋Œ“๊ธ€