streamlitの概要と使い方
概要
- pythonで簡単なMVPを作成できるライブラリ
- jupyterを共有するほどでも無いが、google sheetsより自由度が高いほうがいいぐらいの位置づけのとき
- GCPのcloud runでホストすることが可能
- 独自のドメインを与えたロードバランサー(httpsに限定) + IAPを組み合わせることでGCPのIAMで
roles/iap.httpsResourceAccessor
を持つユーザに限定することができる
- 独自のドメインを与えたロードバランサー(httpsに限定) + IAPを組み合わせることでGCPのIAMで
インストール
$ pip install streamlit
ページの設定
- デフォルトでは表示幅が狭く、テーブルが見づらいので、
st.set_page_config
で設定する
import streamlit as st
st.set_page_config(
layout="wide",
page_icon="🏠",
initial_sidebar_state="expanded",
page_title="Streamlit Example",
)
ページの遷移
st.experimental_set_query_params
やst.session_state
を使うことで、ページの遷移を実現できる- URLパラメータを設定するのにタイムラグがあるので意図した動作にならないことがある
最小の構成例
import streamlit as st
import pandas as pd
# タイトルを追加
st.title('Streamlit Example')
# サイドバーにテキスト入力を追加
user_input = st.sidebar.text_input("Type something here")
# メイン画面にテキスト入力の内容を表示
st.write(f"You typed: {user_input}")
# データフレームの表示
data_url = 'https://raw.githubusercontent.com/fivethirtyeight/data/master/airline-safety/airline-safety.csv'
df = pd.read_csv(data_url)
st.dataframe(df)
# カメラから写真を撮る(httpsに限定)
img_file_buffer = st.camera_input("Take a picture")
起動
- 外部からアクセスするには
--server.address 0.0.0.0
が必要になる
$ streamlit run src/app.py --server.port 8080 --server.address 0.0.0.0"
Dockerfileの例
FROM python
ENV POETRY_VIRTUALENVS_CREATE=false
RUN apt-get update -y && apt-get install -y
RUN pip install --upgrade pip && pip install poetry
WORKDIR /app
COPY . /app/
RUN poetry install --no-ansi --no-interaction
CMD sh -c "streamlit run src/app.py --server.port 8080 --server.address 0.0.0.0"