본문 바로가기
Python/Streamlit

[Python] 파일들 분리해서 처리하는 방법

by dong_su 2023. 11. 21.

지금까지는, 앱 개발을 할 때, 파일 하나로 코드 작성을 모두 했다.
실무에서는 파일을 여러개로 쪼개서 개발한다.

파일을 나눠서 개발하는 장점.
1. 유지보수!
2. 협업가능!

모듈별로 나눠서 개발한다.


기존 방법 )

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

    menu = ["Home", "EDA", "ML"]

    choice = st.sidebar.selectbox("메뉴 선택" , menu)
    
    if choice == menu[0] : 
        st.subheader("Home 화면")

        st.text("파일을 분리해서 처리하는 프로젝트 입니다.")
    elif choice == menu[1] :
        st.subheader("EDA 화면")

        df = pd.read_csv("./data/iris.csv")
        print(df.columns[0])
        st.dataframe(df)

        st.subheader("상관계수")
        st.dataframe(df.corr(numeric_only=True))
    elif choice == menu[2] :
        st.subheader("머신러닝 화면")

    st.text("예측하는 화면을 여기에 개발")  

if __name__ == "__main__" : main()

-> 기존엔 파일 하나에 다 썼지만 실무에서는 이렇게 하지 않는다. 

-> 하려는 동작, 기능 별로 구분 지어 파일들을 분리해서 한다. 웹개발 spring의 MVC 패턴 같은 느낌인 거 같다


파일 분리한 코드 )

import streamlit as st
from app_home import run_home_app
from app_eda import run_eda_app
from app_ml import run_ml_app

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

    menu = ["Home", "EDA", "ML"]

    choice = st.sidebar.selectbox("메뉴 선택" , menu)
    
    if choice == menu[0] : 
        run_home_app()
    elif choice == menu[1] :
        run_eda_app()
    elif choice == menu[2] :
        run_ml_app()

if __name__ == "__main__" : main()

-> 1. 기능별로 app_home.py , app_eda.py , app_ml.py 파일을 만든 후 함수를 만든다.

-> 2. 나눈 파일들을 import 한 후 필요 부분에 넣는다.