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

Streamlit中st.cache_data已弃用,缓存装饰器报错求助

解决Streamlit缓存装饰器弃用警告问题

先明确不同Streamlit版本对应的正确缓存装饰器规则:

  • Streamlit 1.32及以上:官方弃用@st.cache_data和@st.cache_resource,统一使用@st.cache装饰器
  • Streamlit 1.18~1.31:区分两类装饰器——@st.cache_data用于数据加载/计算(比如生成DataFrame),@st.cache_resource用于数据库连接、模型实例等持久化资源
  • Streamlit 1.17及以下:仅支持@st.cache

你的问题核心是版本与装饰器不匹配,且误用了装饰器类型,导致警告持续出现。以下是对应版本的修正方案:

针对最新Streamlit版本(1.32+)的修正代码

直接使用统一的@st.cache装饰器:

import streamlit as st
import pandas as pd

FILE_PATH = "/content/drive/MyDrive/Streamlit/login/mainfile.csv"

@st.cache
def load_data(file_path):
    try:
        df = pd.read_csv(file_path)
        return df
    except Exception as e:
        st.error(f"Error loading data: {e}")
        return pd.DataFrame()

针对Streamlit 1.18~1.31版本的修正代码

用@st.cache_data处理数据加载(这才是对应数据类操作的正确装饰器):

import streamlit as st
import pandas as pd

FILE_PATH = "/content/drive/MyDrive/Streamlit/login/mainfile.csv"

@st.cache_data
def load_data(file_path):
    try:
        df = pd.read_csv(file_path)
        return df
    except Exception as e:
        st.error(f"Error loading data: {e}")
        return pd.DataFrame()

额外排查点

  • 确认版本:运行streamlit --version查看当前版本,再匹配对应装饰器
  • 清理缓存:通过Streamlit界面右上角的「Clear cache」按钮清除旧缓存残留
  • 检查拼写:你之前提到的@st.cache_resources是拼写错误,正确写法为@st.cache_resource(无末尾s),拼写错误会触发Streamlit fallback到旧装饰器,进而出现弃用警告

内容的提问来源于stack exchange,提问作者Md. Toufiq Zumma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:23:15