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

