Streamlit指定依赖版本未生效,为何使用最新库版本?
问题原因与解决方案
你遇到的问题是指定的pandas版本未在Streamlit部署环境中生效,导致应用自动使用了更高版本(pandas 2.0+),而该版本已移除append方法。以下是可能的原因和解决办法:
可能的原因及对应解决步骤
依赖文件未被正确识别
Streamlit Cloud默认读取项目根目录下的requirements.txt文件。如果你的依赖文件名不是这个,或者文件不在根目录,平台会自动安装兼容的最新版本库。请确保依赖文件命名为requirements.txt,且放置在项目根路径下。间接依赖冲突
你指定的其他库可能间接依赖了更高版本的pandas,导致部署时自动升级。可以在本地虚拟环境中执行pip check命令排查依赖冲突,或者修改requirements.txt,明确锁定所有可能引发冲突的依赖版本。例如,如果某库要求pandas>=2.0,你需要找到该库兼容pandas 1.4.2的版本并指定。部署环境缓存未更新
Streamlit Cloud可能缓存了旧的依赖环境,没有重新安装指定版本。解决方式:- 修改
requirements.txt(比如添加一个空行或注释),触发重新部署流程; - 进入应用的Streamlit Cloud设置页面,在"高级"选项中点击"清除缓存",再重新部署应用。
- 修改
本地依赖同步不完整
本地开发环境的依赖可能未完全同步到部署文件中。建议在本地激活虚拟环境后,执行pip freeze > requirements.txt生成完整的依赖清单,确保所有间接依赖也被锁定。
临时兼容方案
如果暂时无法解决版本问题,可以将代码中的append方法替换为pandas全版本兼容的写法:
# 原代码 df_gantt = df_gantt.append({'Step': i, 'Start': start, 'End': end, 'Duration': duration}, ignore_index=True) # 替换为 df_gantt = pd.concat([ df_gantt, pd.DataFrame([{'Step': i, 'Start': start, 'End': end, 'Duration': duration}]) ], ignore_index=True)
内容的提问来源于stack exchange,提问作者Ad D
相关产品推荐
相关产品推荐

