Streamlit Cloud部署报错:ArrowErrorException及文件路径问题求助
Streamlit Cloud部署报错解决指南
一、ArrowErrorException: ExternalFormat("File out of specification: The file must end with PAR1")
针对大Parquet文件读取报错,按以下步骤排查修复:
- 验证Parquet文件完整性:本地打开文件确认末尾是否有PAR1标识,若损坏则重新生成文件
- 改用Git LFS上传大文件:GitHub普通上传大文件易出现截断,安装Git LFS后,执行
git lfs track "*.parquet"追踪文件,再提交推送,确保文件完整同步到仓库 - 拆分大文件为分块Parquet:将300MB+的文件拆分为多个小文件放在同一文件夹,用
polars.scan_parquet("./data/*.parquet")读取整个文件夹,避免单文件过大问题 - 切换远程存储读取:若文件过大不适合存GitHub,可将文件上传至云存储服务,用polars直接读取远程路径(需配置对应访问权限)
二、FileNotFoundError(本地绝对路径问题)
解决路径报错的核心是统一本地与云端的路径逻辑:
- 替换所有硬编码的本地绝对路径为相对路径:比如把
C:/Users/xxx/data/file.parquet改成./data/file.parquet,确保仓库中存在对应路径的文件 - 核对仓库目录结构:检查GitHub仓库里的文件夹层级和代码中引用的路径完全一致,避免因目录名大小写、层级错误导致找不到文件
- 适配多环境路径:如果需要区分本地和云端环境,可通过环境变量判断,示例代码:
import os data_path = "./data/file.parquet" if os.getenv("STREAMLIT_CLOUD") else "本地绝对路径"
内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

