Python/Streamlit

[Python] Streamlit 파일 분리 처리

건휘맨 2024. 4. 24. 17:36

파일을 분리해서 개발하는 방법

분리하는 이유
1. 협업 가능
2. 디버깅 쉽게 가능, 유지보수 편리

 

사용할 기능을 각 파일로 만들어 함수로 저장해 메인에서 사용

# app8_home.py

import streamlit as st

def run_home():
    st.subheader('홈 화면')
    st.text('파일 분리 앱 실습')
    st.image('./data/image_03.jpg')
# app8_eda.py

import streamlit as st
import pandas as pd

def run_eda():
    st.subheader('EDA 화면')

    # iris.csv 파일 읽어와서
    # 여러 컬럼들 선택 가능토록 하여
    # 선택한 컬럼들만 화면에 보여주고
    # 상관 계수도 보여주도록 개발
    df = pd.read_csv('./data/iris.csv')

    choice_list = st.multiselect('컬럼을 선택하세요.', df.columns)
    
    if choice_list != []:

        st.dataframe(df[choice_list])

        st.dataframe(df[choice_list].corr(numeric_only=True))

        st.scatter_chart(df[choice_list])
# app8_ml.py

import streamlit as st

def run_ml():
    # 예측하는 작업을 수행한다.

    st.subheader('머신러닝 예측')
# app8_about.py

import streamlit as st

def run_about():
    st.subheader('이 앱은 ...')

 

다른 파일에 저장한 함수를 메인에서 호출해서 사용

import streamlit as st
from app8_home import run_home
from app8_eda import run_eda
from app8_ml import run_ml
from app8_about import run_about

def main():
    st.title('파일 분리 앱')

    menu = ['Home', 'EDA', 'ML', 'About']

    choice = st.sidebar.selectbox('메뉴', menu)

    if choice == menu[0]:
    # ctrl + 클릭하면 해당 함수가 있는 파일로 이동
        run_home()
    elif choice == menu[1]:
        run_eda()
    elif choice == menu[2]:
        run_ml()
    elif choice == menu[3]:
        run_about()

if __name__ == '__main__':
    main()

 

실행