尽管初始化了 session_state 变量,但在尝试在 Python 脚本中访问 Streamlit 的 session_state 时,我遇到了 KeyError。这是我的代码:
import streamlit as st
def main():
if "show_text" not in st.session_state.keys():
st.session_state["show_text"] = False
st.markdown("# My App")
if st.button("Show text!"):
st.session_state["show_text"] = True
if st.session_state["show_text"] is True:
st.markdown("Lorem ipsum...")
if __name__ == "__main__":
main()
运行脚本后,我收到以下错误消息:
KeyError: 'st.session_state has no key "show_text". Did you forget to initialize it? More info: https://docs.streamlit.io/library/advanced-features/session-state#initialization'
当我在浏览器中打开应用程序时,它会按预期运行。然而,当我第一次运行Python脚本来获取在浏览器中启动应用程序的命令时,错误消息很烦人。 我很困惑,因为我已经初始化了 session_state,如代码中所示。任何有关可能导致此错误的原因的见解将不胜感激。
我仔细查看了错误消息中提供的文档并尝试了多种解决方案,但不幸的是,没有一个解决方案能够解决问题。我确保按照建议初始化了 session_state 变量,但 KeyError 仍然存在。任何进一步的指导或替代解决方案将不胜感激。谢谢您的帮助!
在错误堆栈的顶部,肯定有一个警告,解释了为什么当您使用
streamlit run your_script.py
而不是使用 python your_script.py
启动它时它会起作用:
WARNING streamlit.runtime.state.session_state_proxy: Session state does not function when running a script without `streamlit run`
这就是你的答案。