[streamlit] Streamlit 추가 기능
https://docs.streamlit.io/get-started/fundamentals/additional-features
이제 Streamlit의 기본 개념에 대해 모두 읽으셨고 고급 개념에서 캐싱과 세션 상태를 맛보셨습니다. 하지만 다른 기능들은 어떤 것들이 있을까요? 앱을 한 단계 더 발전시킬 수 있는 몇 가지 추가 기능을 간략히 살펴보세요.
1. Theming
스트림릿은 기본적으로 라이트 및 다크 테마를 지원합니다. Streamlit은 먼저 앱을 보는 사용자가 운영 체제 및 브라우저에서 설정한 밝게 또는 어둡게 모드 기본 설정이 있는지 확인합니다. 그렇다면 해당 기본 설정이 사용됩니다. 그렇지 않으면 기본적으로 밝은 테마가 적용됩니다. "⋮" → "설정"에서 활성 테마를 변경할 수도 있습니다.
앱에 나만의 테마를 추가하고 싶으신가요? '설정' 메뉴에서 '활성 테마 편집'을 클릭하면 테마 편집기에 액세스할 수 있습니다. 이 편집기를 사용하여 다양한 색상을 시도하고 앱 업데이트를 실시간으로 확인할 수 있습니다.
작업이 마음에 들면 [테마] 구성 섹션에서 구성 옵션을 설정하여 테마를 저장할 수 있습니다. 앱의 테마를 정의한 후에는 테마 선택기에 "사용자 지정 테마"로 표시되며 기본으로 포함된 밝은 테마 및 어두운 테마 대신 적용됩니다.
테마를 정의할 때 사용할 수 있는 옵션에 대한 자세한 내용은 테마 옵션 문서에서 확인할 수 있습니다.
2. Pages
앱이 커질수록 여러 페이지로 구성하는 것이 유용해집니다. 이렇게 하면 개발자는 앱을 관리하기 쉽고 사용자는 탐색하기 쉬워집니다. Streamlit은 여러 페이지 앱을 간편하게 만들 수 있는 방법을 제공합니다. 이 기능을 사용하면 한 페이지 앱을 만드는 것만큼이나 쉽게 여러 페이지 앱을 만들 수 있습니다! 다음과 같이 기존 앱에 페이지를 추가하기만 하면 됩니다:
- 메인 스크립트가 들어 있는 폴더에 새 페이지 폴더를 만듭니다. 메인 스크립트의 이름이 main_page.py라고 가정해 보겠습니다.
- 페이지 폴더에 새 .py 파일을 추가하여 앱에 페이지를 더 추가할 수 있습니다.
- 평소처럼 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 워크플로를 사용하여 테스트를 자동화하고 변경 사항에 대한 즉각적인 알림을 받을 수 있습니다. 앱 테스트 가이드에서 자세히 알아보세요.