You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Streamlit运行出现ScriptRunContext缺失警告及页面无法更新问题求助

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

火山引擎 最新活动