Streamlit 라이브러리를 활용한 배포 예제

Page content

사전준비

  • 배포를 하기 위해서는 필수로 진행해야 할 사전준비가 필요하다.
  • Git & Github 설치 과정은 생략한다.

Step 01 - Streamlit 회원가입

Untitled

Untitled

  • Set up your account를 작성한다. 작성이 끝나면 다음과 같은 화면이 나오면 정상적으로 등록이 된 것이다.

Untitled

Step 02 - Github 레포 설정

  • Gitub 레포를 설정한다.
  • 이 때, 주의해야 할 것은 Public으로 설정을 해야한다.
    • .gitignore 파일도 Setting 하는 것이 좋다.

Untitled

Step 03 - 주요 라이브러리 설치

  • 다음 코드를 실행하여 배포를 위한 라이브러리를 설치한다.
  • 가상 환경 이후 필수 라이브러리 설치를 진행한다.
$ virtualenv venv
$ source venv/Scripts/activate
(venv) $ pip install numpy pandas matplotlib seaborn altair plotly streamlit joblib scikit-learn

Step 04 - requirements.txt 파일 작성

  • 배포를 위해서는 필수적으로 requirements.txt 파일이 필요하다.
  • 기 설치된 라이브러리를 requirements.txt 파일로 만드는 코드는 다음과 같다.
(venv) $ pip freeze > requirements.txt
(venv) $ ls
README.md  requirements.txt  venv/

메인 코드 작성

  • 간단하게 해당 라이브러리를 호출하고 버전을 보여주는 코드를 작성하도록 한다.
  • 버전 작성시, st.write() 함수를 활용할 것이다.
  • 파일명 : app.py
# -*- coding: UTF-8 -*-
import streamlit as st 
import pandas as pd 
import matplotlib as mpl
import seaborn as sns 
import plotly 
import sklearn 
import numpy as np 

# Fxns

def main():
    """코드 작성"""
    st.title("streamlit 버전: " + str(st.__version__))
    st.title("pandas 버전: " + str(pd.__version__))
    st.title("matplotlib 버전: " + str(mpl.__version__))
    st.title("seaborn 버전: " + str(sns.__version__))
    st.title("sklearn 버전: " + str(sklearn.__version__))
    st.title("numpy 버전: " + str(np.__version__))
    st.title("plotly 버전: " + str(plotly.__version__))

if __name__ == "__main__":
    main()
(venv) $ streamlit run app.py 

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8502
  Network URL: http://192.168.0.20:8502

Untitled

Github에 업로드

  • 새로 추가된 파일 / 수정된 파일이 있으면 주기적으로 업로드를 진행한다.
(venv) $ git add .
(venv) $ git commit -m "Updated"
(venv) $ git push

Untitled

배포

Untitled

Untitled

  • Deploy an app 함수가 나오면 정상적으로 배포 준비가 된 것이다.

Untitled

  • Advanced Settings 를 클릭하면 파이썬 실행버전도 선택할 수 있다.

Untitled

Untitled

  • 위 상태가 되면 배포가 완료가 된 것이다.