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

Streamlit磁盘缓存存储位置及pandas版本切换缓存报错解决

Streamlit缓存相关问题解答

1. @st.experimental_memo(persist="disk")的缓存存储位置

  • Linux/macOS:默认存储在 ~/.streamlit/cache 目录下,该目录会根据Python版本、Streamlit版本及缓存条目哈希值进一步细分出子目录。
  • Windows:默认存储路径为 %userprofile%/.streamlit/cache,同样包含分级子目录区分不同缓存。

2. 切换pandas版本后出现AttributeError: Can't get attribute '_unpickle_block'的解决方法

这个错误确实是磁盘上持久化的pickle缓存由旧版本pandas序列化,新版本无法反序列化导致的,解决方式如下:

方法一:手动清理磁盘缓存

直接删除Streamlit的缓存目录:

  • Linux/macOS:执行命令 rm -rf ~/.streamlit/cache
  • Windows:打开文件资源管理器,定位到 %userprofile%/.streamlit/cache,删除整个cache文件夹

方法二:代码层面强制刷新缓存

通过修改@st.experimental_memo参数触发缓存失效:

@st.experimental_memo(show_spinner=False, max_entries=3, persist="disk", ttl=0)
def your_cached_function():
    # 原函数逻辑

运行一次后,再将ttl参数恢复原有设置,即可强制生成新的适配当前pandas版本的缓存。

方法三:长期避免跨版本缓存冲突

将依赖库版本信息纳入缓存哈希计算,比如在缓存函数中传入pandas版本作为参数:

import pandas as pd

@st.experimental_memo(show_spinner=False, max_entries=3, persist="disk")
def your_cached_function(pd_version=pd.__version__):
    # 原函数逻辑

这样当pandas版本变更时,会自动生成新的缓存条目,不会再触发反序列化错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:05:14