st-pages 라이브러리 소개

Page content

강의소개

  • 인프런에서 Streamlit 관련 강의를 진행하고 있습니다.
  • 인프런 : https://inf.run/YPniH

개요

  • Streamlit 생태계에 기반한 Components를 살펴본다.
  • st-pages 라이브러리를 확인한다.

Components

  • Components는 Streamlit Community와 Creators가 직접 개발한 Streamlit 관련 라이브러리를 말한다.
  • 여기에는 다양한 라이브러리들이 존재한다.

Untitled

활용법 주의

Untitled

  • 확인해야 하는 것은 최근 Releases 날짜다.
    • Release 날짜가 최근 날짜에서 멀면 멀수록 관리가 안되고 있다는 것이며, 이 부분은 향후 프로젝트 유지보수할 때 어려움을 겪을 수도 있다.

st-pages

Untitled

  • st-pages를 사용하면 파일 이름을 변경할 필요 없이 코드에서 여러 페이지로 구성된 스트림릿 앱의 페이지 이름, 순서, 아이콘을 설정(선택적으로 페이지를 섹션으로 그룹화)할 수 있다.

Untitled

st-pages 방법 1 : Streamlit 코드 내에서 페이지 선언

from st_pages import Page, Section, show_pages, add_page_title

# Either this or add_indentation() MUST be called on each page in your
# app to add indendation in the sidebar
add_page_title()

# Specify what pages should be shown in the sidebar, and what their titles and icons
# should be
show_pages(
    [
        Page("streamlit_app.py", "Home", "🏠"),
        Page("other_pages/page2.py", "Page 2", ":books:"),
        Section("My section", icon="🎈️"),
        # Pages after a section will be indented
        Page("Another page", icon="💪"),
        # Unless you explicitly say in_section=False
        Page("Not in a section", in_section=False)
    ]
)

st-pages 방법 2 : config 파일 내에서 페이지 선언

  • 파일은 .streamlit/pages.toml
[[pages]]
path = "streamlit_app.py"
name = "Home"
icon = "🏠"

[[pages]]
path = "other_pages/page2.py"
name = "Page 2"
icon = ":books:"

[[pages]]
name = "My second"
icon = "🎈️"
is_section = true

# Pages after an `is_section = true` will be indented
[[pages]]
name = "Another page"
icon = "💪"

# Unless you explicitly say in_section = false`
[[pages]]
name = "Not in a section"
in_section = false
  • 그 후에 streamlit 파일에서 다음과 같이 호출한다.
from st_pages import show_pages_from_config, add_page_title

# Either this or add_indentation() MUST be called on each page in your
# app to add indendation in the sidebar
add_page_title()

show_pages_from_config()
  • 이론 설명은 여기까지 진행하기로 한다.

라이브러리 설치

  • 라이브러리 설치는 다음과 같다.
pip install st_pages>=0.4.3
  • 필자는 toml 파일에서 관리하는 것을 선호하기 때문에, 다음과 같이 추가하였다.
    • 소스 코드는 공식 예제를 참조한다.
[[pages]]
path = "app.py"
name = "Home"
icon = ":house:"

[[pages]]
name = "Cool apps"
icon = ":pig:"
is_section = true

[[pages]]
path = "pages/example_one.py"
name = "Example One"
icon = ":books:"

[[pages]]
path = "pages/example_two.py"
name = "Example Two"
icon = "✏️"

[[pages]]
path = "pages/example_four.py"
name = "Example Four"
icon = "📖"

[[pages]]
name = "Other apps"
icon = ":horse:"
is_section = true

[[pages]]
path = "pages/example_three.py"
icon = "🧰"

[[pages]]
path = "pages/example_five.py"
name = "Example Five"
icon = "🧰"
in_section = false
  • 파일명은 app.py
import streamlit as st
from st_pages import Page, Section, show_pages, add_page_title, show_pages_from_config

add_page_title()
show_pages_from_config(".streamlit/pages.toml")
  • 그 후에 각 파일명을 pages 폴더 내부에 하나씩 넣고, 아래와 같이 코드를 공통적으로 추가한다.
    • example_three.py 파일 예
import streamlit as st
from st_pages import Page, Section, show_pages, add_page_title, show_pages_from_config

add_page_title()
show_pages_from_config(".streamlit/pages.toml")

st.title("example_three")

파일 구조

  • 파일 구조는 아래와 같다.

Untitled

테스트

  • 테스트 화면은 아래와 같다.

Untitled