Streamlit デプロイガイド
PythonでWebアプリを作れるStreamlitのデプロイ手順。
費用
無料- Streamlit Community Cloud無料枠
- プライベートリポは制限あり
必要なもの
- GitHubアカウント
- Streamlitアプリ(app.py)
- requirements.txt
ローカルで動作確認
01. インストール
pip install streamlit
02. 実行
streamlit run app.py
ブラウザで localhost:8501 が開く
Community Cloudにデプロイ
01. GitHubにリポジトリ作成
app.py と requirements.txt をpush
02. Streamlit Community Cloudにアクセス
https://share.streamlit.io/
03. GitHubでサインイン
04. New app → リポジトリを選択
- Branch: main
- Main file: app.py
05. Deploy
数分でデプロイ完了。URLが発行される
シークレット設定
01. APIキーなどの機密情報
App settings → Secrets → TOML形式で記述
OPENAI_API_KEY = "sk-..."
02. コードから参照
import streamlit as st
api_key = st.secrets["OPENAI_API_KEY"]
参考リンク
ここから先は、よくある質問と詰まりポイントを詳しく解説します。
Q&A - デプロイエラー
ModuleNotFoundError
requirements.txtに必要なパッケージが書かれていない。ローカルで pip freeze > requirements.txt して全部入れる。
デプロイが終わらない
- requirements.txtに重いパッケージ(torch等)がある
- ログを確認(Manage app → Logs)
- リソース制限に引っかかっている可能性
「App not found」エラー
- app.pyのパスが間違っている
- ファイル名を確認(大文字小文字に注意)
Q&A - リソース制限
無料枠の制限
- プライベートリポ: 1アプリまで
- パブリックリポ: 無制限
- メモリ: 1GB
- スリープ: 非アクティブで停止
アプリがスリープする
無料枠はアクセスがないとスリープ。再アクセスで起動するが数秒かかる。常時起動が必要なら別のホスティング(Railway, Render等)を検討。
Q&A - シークレット関連
シークレットが読み込めない
- TOML形式が正しいか確認
- 引用符を確認(文字列は
"で囲む) - デプロイ後にSecretsを追加した場合はRebootが必要
ローカルでもシークレットを使いたい
.streamlit/secrets.toml を作成(.gitignoreに追加すること)
OPENAI_API_KEY = "sk-..."
Q&A - 代替デプロイ先
Community Cloud以外の選択肢
- Railway: 無料枠あり、Docker対応
- Render: 無料枠あり、自動デプロイ
- Heroku: 有料化済み
- 自前VPS: 完全制御可能
参考リンク
タグ: #Streamlit #Python #デプロイ #Webアプリ #無料