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

在GCP上部署Streamlit应用后图片无法加载问题求助

Streamlit部署到GCP后图片显示为0的解决方案

问题原因

  • 语法错误:代码中st.image(dis, channels="RGB)缺少右双引号,生产环境运行时会触发解析异常
  • 函数分支无返回:load_image仅在入参为yes时返回图片对象,其余情况默认返回None,传入st.image会导致异常渲染
  • 依赖导入缺失:代码未导入PIL库,部署环境无缓存的导入上下文会触发运行报错
  • 路径不匹配:GCP部署环境的工作目录和本地不一致,相对路径images/yes.jpg找不到对应文件
  • 旧缓存装饰器异常:@st.cache是Streamlit旧版缓存API,对PIL对象的序列化存在兼容问题,容易出现渲染异常

部署后异常效果如下图:
问题报错截图

修复方案

步骤1:修改代码逻辑

import streamlit as st
from PIL import Image
import os

# 替换旧缓存API为资源专用的cache_resource
@st.cache_resource
def load_image(out):
    if out=='yes':
        # 用绝对路径定位图片,避免相对路径在部署环境失效
        img_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images/yes.jpg")
        # 加路径存在校验
        if os.path.exists(img_path):
            return Image.open(img_path)
    # 异常分支明确返回值,避免无返回情况
    return None

output = "yes" # 此处替换为你自己的业务逻辑赋值
dis = load_image(output)
if dis:
    # 补全语法引号
    st.image(dis, channels="RGB")
else:
    st.warning("图片加载失败")

步骤2:校验部署配置

  • 确认GCP部署包中包含images目录及目录下的yes.jpg文件,不要在.gcloudignore里排除静态资源目录
  • 确认requirements.txt中添加了Pillow>=9.0.0依赖声明,保证部署环境安装了图片处理库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:54:04