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
相关产品推荐
相关产品推荐

