Streamlit应用部署Heroku后崩溃求助(本地运行正常)
解决Streamlit部署到Heroku时的Toml解析错误
从你提供的日志里能看到核心问题:toml.decoder.TomlDecodeError: Key name found without value. Reached end of line.,这说明Streamlit的配置文件config.toml存在语法错误,导致应用启动时解析失败。
问题根源出在你的setup.sh生成配置文件的方式上——原来的echo写法在bash环境下,可能生成了不符合Toml规范的内容,比如多余的空行或者未正确处理的转义字符,触发了解析报错。
修复方案
把你的setup.sh文件替换成下面的内容:
mkdir -p ~/.streamlit/ printf "[server]\nport = %d\nenableCORS = false\nheadless = true\n" "$PORT" > ~/.streamlit/config.toml
为什么这个方案有效?
printf比echo更可靠,能精准控制输出格式,避免转义字符处理带来的异常。- 它会正确将Heroku自动设置的
$PORT环境变量替换为数值,生成完全符合Toml语法的配置项。 - 生成的
config.toml内容干净,没有多余空行或无效字符,Streamlit可以顺利完成初始化。
额外确认项
- 确保你的
Procfile内容正确无误:web: sh setup.sh && streamlit run echonet.py - 推送修改后的
setup.sh到Heroku仓库,触发重新构建部署。
这样就能解决应用启动崩溃的问题了,配置文件的语法错误被修复后,Streamlit可以正常在Heroku上运行。
内容的提问来源于stack exchange,提问作者Alex Lee
相关产品推荐
相关产品推荐

