Streamlit运行出现ScriptRunContext缺失警告及页面无法更新问题求助
兄弟,我看了你的问题、代码和报错信息,这俩问题其实根源大概率是同一个——你没按Streamlit要求的正确方式启动脚本,另外代码里还有个小布局坑,我给你一步步捋:
一、解决警告和页面不更新的核心问题
你看报错里明明白白写了提示:
Warning: to view this Streamlit app on a browser, run it with the following command: streamlit run c:/Users/#####/#####/#####/#####/show.py [ARGUMENTS]
估计你是直接用python show.py启动脚本了吧?但Streamlit app必须用streamlit run命令来启动!因为这个命令会帮你初始化Streamlit的运行上下文(就是报错里说的那个ScriptRunContext),同时还会开启热重载功能——这样你改完代码,页面会自动刷新,不用每次都重新跑一遍脚本。
正确启动步骤:
- 打开终端/命令提示符
- 切换到你的脚本所在的文件夹
- 敲命令:
streamlit run show.py(把show.py换成你实际的脚本文件名就行)
按这个方式启动,那个烦人的ScriptRunContext警告应该会直接消失,代码修改后页面也会自动同步更新,亲测有效!
二、代码里的小布局问题(避免显示异常)
看你代码里的st.write("---"),你把它放在了left_column的with块之后、right_column的with块之前,还在container的with块里,这会导致这条分割线不在任何列中,可能会打乱页面布局。你可以把它移到container的外面,比如:
with st.container(): left_column, right_column = st.columns(2) with left_column: st.write("\n\n") st.write("\nYour IP address is shown below") st.write("\n\nBelow is a video explaining how this works") st.write(f"Your IP Address:{actualip}") st.write("\nInstructional video: [Video](视频链接)") with right_column: st_lottie(lottie_animationlink, height=300, key="Water") # 把分割线移到container外面,布局更规范 st.write("---")
三、额外小优化(提升用户体验)
你的load_lottie函数如果请求失败会返回None,直接传给st_lottie可能会显示空白,不如加个判断:
# 替换为你的lottie动画JSON链接 lottie_animationlink = load_lottie("你的lottie动画链接") # 后面的right_column块里修改成: with right_column: if lottie_animationlink: st_lottie(lottie_animationlink, height=300, key="Water") else: st.write("动画加载失败啦😅")
这样就算动画链接出问题,也能给用户个提示,不会显得页面有bug。
备注:内容来源于stack exchange,提问作者aperson




