#概要
streamlit run main.py
を実行すると、
AttributeError: module 'streamlit' has no attribute 'session_state'
というエラーになる問題で困っています。
私の行った手順は以下の通りです
(1)main.pyを以下のようにした
python
1import streamlit as st 2st.set_page_config(layout="wide") 3 4import select_page as page1 5import show_page as page2 6import scraping_page as page3 7 8 9pages = { 10 "対象サイトの選択": page1.page, 11 "新着情報一覧": page2.page, 12 "更新の実行": page3.page, 13} 14 15 16 17if "news" not in st.session_state: 18 st.session_state["news"] = {} 19if "sites" not in st.session_state: 20 st.session_state["sites"] = {} 21 22st.sidebar.title('ページの一覧') 23selection = st.sidebar.radio("", list(pages.keys())) 24 25if selection == "対象サイトの選択": 26 is_scraping_list = pages[selection]() 27elif selection == "新着情報一覧": 28 pages[selection](st.session_state["news"]) 29elif selection == "更新の実行" : 30 news_dict = pages[selection]() 31 st.session_state["news"] = news_dict
(2)streamlit run main.py
を実行した
すると、以下のような結果になりました。
error
1AttributeError: module 'streamlit' has no attribute 'session_state' 2Traceback: 3File "/Users/toshiaki/anaconda3/envs/Campus-Dog/lib/python3.8/site-packages/streamlit/script_runner.py", line 337, in _run_script 4 exec(code, module.__dict__) 5File "/Users/toshiaki/workspace/Campus-Dog/main.py", line 17, in <module> 6 if "news" not in st.session_state:
私はキー名がnews
とsites
のセッションに空の辞書が代入されると思いました。
なぜなら、私は一度もセッションを触っておらず、かつ公式ドキュメントには、以下のように書かれているからです。
Initialization
if 'key' not in st.session_state:
st.session_state['key'] = 'value'
Session State also supports attribute based syntax
if 'key' not in st.session_state:
st.session_state.key = 'value'
これはst.session_state
を用いればセッションにアクセスできることを意味していると思います。
なお、私の環境は以下の通りです。
MacOS Big Sur
Streamlit 0.81.1
Python 3.8.8
パッケージ管理はAnacondaを使用
検索エンジンでエラーメッセージを検索しましたが、解決に役立つ情報は見つかりませんでした。
追記
回答1件
あなたの回答
tips
プレビュー