You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python的Streamlit在导入错误时立即终止并显示自定义提示

解决Streamlit导入错误后仍执行后续代码的问题

问题核心在于st.stop()仅会终止后续Streamlit组件的渲染流程,但Python脚本本身会继续执行后续代码,导致未定义的default被调用,进而抛出Traceback。要彻底终止程序并仅显示自定义错误,需在捕获导入错误后同时终止脚本执行。

修改后的代码

import streamlit as st
import sys

try:
    from google.auth import default
    from google.cloud import bigquery
except ImportError:
    st.error("需要重新配置身份验证或安装依赖:请确保已安装google-auth和google-cloud-bigquery库,并正确设置Google Cloud凭证。")
    st.stop()
    sys.exit()  # 终止整个Python脚本,彻底阻止后续代码执行

import pandas as pd
import base64

st.set_page_config(layout="wide")
pd.set_option('display.max_columns', None)
credentials, project_id = default()
client = bigquery.Client(credentials=credentials, project="project")
st.title('Tool')
st.write('Provide the ID')
_options = ['1', '2', '3']
default_client = "1"

with st.sidebar:
    _id = st.text_input("ID:","jhjkdkjhhkjhkj")

关键改动说明

  • 导入sys模块,使用sys.exit()在捕获导入错误后直接终止整个Python脚本,避免后续依赖未导入的代码执行。
  • 改用st.error显示错误信息,相比st.write更醒目,符合错误提示的UI规范。
  • 优化错误提示文本,精准指向可能的问题原因(依赖未安装或凭证未配置)。

其他可选方案

若不想使用sys.exit(),可将所有依赖Google库的代码全部包裹在try块内,通过代码结构隔离依赖,确保导入失败时不会执行相关代码:

import streamlit as st

st.set_page_config(layout="wide")  # 必须放在所有Streamlit命令最前面

try:
    from google.auth import default
    from google.cloud import bigquery
    import pandas as pd
    import base64

    pd.set_option('display.max_columns', None)
    credentials, project_id = default()
    client = bigquery.Client(credentials=credentials, project="project")
    st.title('Tool')
    st.write('Provide the ID')
    _options = ['1', '2', '3']
    default_client = "1"

    with st.sidebar:
        _id = st.text_input("ID:","jhjkdkjhhkjhkj")
except ImportError:
    st.error("需要重新配置身份验证或安装依赖:请确保已安装google-auth和google-cloud-bigquery库,并正确设置Google Cloud凭证。")
    st.stop()

内容的提问来源于stack exchange,提问作者MAC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:05:28