본문 바로가기

IT/Python

Flask, Streamlit 함께 사용하기

 

Streamlit이란, 
Python 으로 데이터 앱을 빠르고 쉽게 만들 수 있도록 돕는 오픈소스 앱 프레임워크이다. 
HTML, CSS, JavaScript에 대한 깊은 지식이 없어도 멋진 UI를 만들 수 있다. 
빠른 프로토타입을 구현하는데 이만한 도구가 없을 정도로 장점 가득한 아이다. 
 
Streamlit의 단점도 있다. 
1. 접근제어 한계 
기존 웹프레임워크에서 기본적으로 제공하는 SSO연결, 세션연결, 권한관리, 페이지 Redirection 등의 기능이 부족하며, 
2. 커스터마이징 한계 
HTML, CSS, JavaScript에 대한 자유도가 떨어지다보니 UI를 디자인하는데 커스터마이징에 한계가 있다. 
3. 많은 메모리 사용 
데이터를 한번에 불러와서 필터링을 거는 방식으로 데이터를 활용하다보니 메모리 사용에 주의가 필요하다. 
 
Flask + Streamlit 을 함께 써보다
그럼에도 불구하고 Streamlit의 장점이 분명하기에 
streamlit의 한계점을 flask가 보완하며 함께 사용하고 있다. 
 
함께 사용하는 방법 
1. Flask 웹서비스를 띄운다. 
2. Flask에서 SSO , route 설정 , 권한 설정 등 접근제어를 만든다.
3. Streamlit 웹서비스를 띄운다. 
4. Streamlit 상에서 분석 프로토타입을 만든다. 
5. Flask의 페이지마다 Iframe 으로 streamlit을 연결해준다. 
 
활용 꿀팁 
* Streamlit 네비게이션 없애기 
Streamlit에서는 기본적으로 pages라는 폴더에 순서대로 파일을 만들면 네비게이션바에 순서대로 메뉴가 생성된다. 
이런 네비게이션 바를 없애고 싶다면, streamlit 서버를 실행할때 다음과 같은 옵션을 주고 실행하면 된다.
 
streamlit -run client.showSidebarNavigation=False run.py 
 
* Streamlit 페이지 바로 접근 하기 
streamlit에서 원하는 페이지에 바로 접근하려면 URL뒤에 해당 페이지명을 사용해주면 된다. 
예를 들어 , 1_streamlit.py 라는 파일이 pages 폴더내에 있다면, 
http://[streamlit_url]/streamlit 
이런식으로 바로 접근이 가능하다. 
 
* 파일명과 접근명을 다르게 하고 싶다면? 
st_pages 패키지가 해당 기능을 구현해준다. 
1. 먼저 st_pages 패키지를 설치한다. 
pip install st-pages
 
2.  streamlit 서버 실행 py 파일에 다음과 같이 등록해준다. 
from st_pages import show_pages
show_pages(
[
  Page("pages/1_streamlit.py", "Steam", "icon"),
  Page("pages/2_streamlit.py", "Steam", "icon"),
  Page("pages/3_streamlit.py", "Steam", "icon"),
]
)
 
3. 그런 다음 streamlitURL/Steam 이렇게했을때 바로 해당페이지로 갈 수 있다. 
 
 
 
 
 
 

반응형