데이터분석/Python

[streamlit] Streamlit 추가 기능

psystat 2024. 8. 15. 12:39

https://docs.streamlit.io/get-started/fundamentals/additional-features

 

Streamlit Docs

Join the community Streamlit is more than just a way to make data apps, it's also a community of creators that share their apps and ideas and help each other make their work better. Please come join us on the community forum. We love to hear your questions

docs.streamlit.io

이제 Streamlit의 기본 개념에 대해 모두 읽으셨고 고급 개념에서 캐싱과 세션 상태를 맛보셨습니다. 하지만 다른 기능들은 어떤 것들이 있을까요? 앱을 한 단계 더 발전시킬 수 있는 몇 가지 추가 기능을 간략히 살펴보세요.

1. Theming

스트림릿은 기본적으로 라이트 및 다크 테마를 지원합니다. Streamlit은 먼저 앱을 보는 사용자가 운영 체제 및 브라우저에서 설정한 밝게 또는 어둡게 모드 기본 설정이 있는지 확인합니다. 그렇다면 해당 기본 설정이 사용됩니다. 그렇지 않으면 기본적으로 밝은 테마가 적용됩니다. "⋮" → "설정"에서 활성 테마를 변경할 수도 있습니다.

앱에 나만의 테마를 추가하고 싶으신가요? '설정' 메뉴에서 '활성 테마 편집'을 클릭하면 테마 편집기에 액세스할 수 있습니다. 이 편집기를 사용하여 다양한 색상을 시도하고 앱 업데이트를 실시간으로 확인할 수 있습니다.

작업이 마음에 들면 [테마] 구성 섹션에서 구성 옵션을 설정하여 테마를 저장할 수 있습니다. 앱의 테마를 정의한 후에는 테마 선택기에 "사용자 지정 테마"로 표시되며 기본으로 포함된 밝은 테마 및 어두운 테마 대신 적용됩니다.

테마를 정의할 때 사용할 수 있는 옵션에 대한 자세한 내용은 테마 옵션 문서에서 확인할 수 있습니다.

2. Pages

앱이 커질수록 여러 페이지로 구성하는 것이 유용해집니다. 이렇게 하면 개발자는 앱을 관리하기 쉽고 사용자는 탐색하기 쉬워집니다. Streamlit은 여러 페이지 앱을 간편하게 만들 수 있는 방법을 제공합니다. 이 기능을 사용하면 한 페이지 앱을 만드는 것만큼이나 쉽게 여러 페이지 앱을 만들 수 있습니다! 다음과 같이 기존 앱에 페이지를 추가하기만 하면 됩니다:

  1. 메인 스크립트가 들어 있는 폴더에 새 페이지 폴더를 만듭니다. 메인 스크립트의 이름이 main_page.py라고 가정해 보겠습니다.
  2. 페이지 폴더에 새 .py 파일을 추가하여 앱에 페이지를 더 추가할 수 있습니다.
  3. 평소처럼 streamlit run main_page.py를 실행합니다.

이제 끝났습니다! 이제 main_page.py 스크립트가 앱의 메인 페이지에 해당합니다. 그리고 사이드바 페이지 선택기의 페이지 폴더에서 다른 스크립트를 볼 수 있습니다. 페이지는 파일 이름에 따라 나열됩니다(파일 확장자 없이 밑줄은 무시됨). 예를 들어

main_page.py

import streamlit as st

st.markdown("# Main page 🎈")
st.sidebar.markdown("# Main page 🎈")

pages/page_2.py

import streamlit as st

st.markdown("# Page 2 ❄️")
st.sidebar.markdown("# Page 2 ❄️")

pages/page_3.py

import streamlit as st

st.markdown("# Page 3 🎉")
st.sidebar.markdown("# Page 3 🎉")

이제 streamlit run main_page.py를 실행하고 반짝이는 새 멀티페이지 앱을 확인하세요!

멀티페이지 앱에 대한 문서에서는 페이지 정의, 멀티페이지 앱 구성 및 실행, 페이지 간 이동 등 앱에 페이지를 추가하는 방법을 설명합니다. 기본 사항을 이해했다면 첫 번째 멀티페이지 앱을 만들어 보세요!

3. Custom components

Streamlit 라이브러리에서 적합한 컴포넌트를 찾을 수 없는 경우, 사용자 지정 컴포넌트를 사용해 Streamlit의 기본 기능을 확장해 보세요. 컴포넌트 갤러리에서 커뮤니티에서 만든 인기 있는 컴포넌트를 탐색하고 찾아보세요. 프론트엔드 개발에 관심이 있다면 스트림릿의 컴포넌트 API를 사용하여 자신만의 커스텀 컴포넌트를 만들 수 있습니다.

4. Static file serving

스트림릿 기초에서 배운 것처럼 스트림릿은 클라이언트가 연결하는 서버를 실행합니다. 즉, 앱의 시청자는 앱에 로컬로 있는 파일에 직접 액세스할 수 없습니다. 대부분의 경우 Streamlit 명령이 이를 처리하므로 문제가 되지 않습니다. st.image(<path-to-image>)를 사용하면 스트림릿 서버가 파일에 액세스하고 필요한 호스팅을 처리하여 앱 뷰어가 해당 파일을 볼 수 있도록 합니다. 그러나 이미지나 파일에 대한 직접 URL을 원한다면 직접 호스팅해야 합니다. 이를 위해서는 올바른 구성을 설정하고 호스팅된 파일을 정적이라는 디렉터리에 배치해야 합니다. 예를 들어 프로젝트는 다음과 같을 수 있습니다:

your-project/
├── static/
│   └── my_hosted-image.png
└── streamlit_app.py

자세한 내용은 정적 파일 제공에 대한 가이드를 참조하세요.

5. App testing

좋은 개발 습관에는 코드 테스트가 포함됩니다. 자동화된 테스트를 통해 더 높은 품질의 코드를 더 빠르게 작성할 수 있습니다! Streamlit에는 테스트를 쉽게 빌드할 수 있는 테스트 프레임워크가 내장되어 있습니다. 선호하는 테스트 프레임워크를 사용하여 테스트를 실행하세요. 저희는 pytest를 좋아합니다. Streamlit 앱을 테스트할 때는 앱 실행을 시뮬레이션하고 사용자 입력을 선언한 다음 결과를 검사합니다. GitHub 워크플로를 사용하여 테스트를 자동화하고 변경 사항에 대한 즉각적인 알림을 받을 수 있습니다. 앱 테스트 가이드에서 자세히 알아보세요.