尽管初始化了session_state变量,但在Python脚本中访问Streamlit session_state时出现KeyError

问题描述 投票:0回答:1

尽管初始化了 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 仍然存在。任何进一步的指导或替代解决方案将不胜感激。谢谢您的帮助!

python initialization streamlit session-state keyerror
1个回答
0
投票

在错误堆栈的顶部,肯定有一个警告,解释了为什么当您使用

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`

这就是你的答案。

© www.soinside.com 2019 - 2024. All rights reserved.