Streamlit Authenticator登录报错:form_name参数已被fields替代
问题根源
你的代码没改动但突然报错,是因为streamlit-authenticator依赖包被自动更新到了新版本——新版本废弃了login方法的第二个form_name参数,替换成了fields参数,旧调用方式不再兼容。
两种解决方案
方案1:锁定旧版本(快速恢复)
直接固定之前能用的旧版本,阻止自动升级:
- 在项目的
requirements.txt里添加明确版本号(比如最后支持旧参数的版本,示例:streamlit-authenticator==0.1.5,根据你实际使用的稳定版本调整) - 执行重装命令:
pip install streamlit-authenticator==0.1.5
如果是Streamlit Cloud部署,务必确保requirements.txt写死版本,避免平台自动升级依赖。
方案2:适配新版本参数(长期维护)
按照新版本规范修改login方法调用,把原form_name参数替换成fields,同时用location参数指定原main的位置:
修改后的代码片段:
name, authentication_status, username = authenticator.login( fields={'Form name': 'Login'}, location='main' )
如果需要自定义表单内的标签,也可以扩展fields配置:
name, authentication_status, username = authenticator.login( fields={ 'Form name': 'Login', 'Username': '用户名', 'Password': '密码', 'Login': '登录' }, location='main' )
验证
修改后重启应用,检查登录界面是否正常加载、无报错即可。
内容的提问来源于stack exchange,提问作者BurakDaglar
相关产品推荐
相关产品推荐

