部署Dash应用至Render时从GitHub读取Excel文件失败的问题
解决Dash部署到Render时读取GitHub Excel文件的问题
错误原因分析
你遇到的所有问题本质分为两类:路径配置错误和GitHub文件URL使用错误,对应具体情况:
- 相对路径错误:你写的
.\assets"file_name.xlsx"存在语法错误(引号位置错误),且需确认仓库中assets文件夹及文件是否已正常提交、未被.gitignore排除。 - GitHub URL错误:你使用的
tree开头的URL是网页浏览地址,返回的是HTML页面而非Excel原始二进制内容,这才导致格式识别、解压类错误。
正确解决方案
方案1:使用仓库相对路径(推荐)
Render部署时项目根目录对应GitHub仓库根目录,只要文件在仓库中,直接用正确相对路径即可:
import pandas as pd # 正确相对路径写法,指定openpyxl引擎适配xlsx格式 df = pd.read_excel("./assets/2024_Pitching_Logs.xlsx", usecols=["Name", "Date", "Opp", "W", "L", "IP", "BF", "H", "R", "ER", "HR", "BB", "SO","Pit"], engine="openpyxl")
注意事项:
- 确认
assets文件夹和Excel文件已提交到GitHub,未被.gitignore规则排除。 - 查看Render构建日志,确认文件已被正常拉取(无忽略assets的提示)。
方案2:使用GitHub原始文件URL
若需通过URL读取,必须替换为GitHub的原始文件地址(将tree替换为raw):
import pandas as pd import requests from io import BytesIO # 替换tree为raw,获取文件原始二进制数据 url = "https://github.com/mtdewrocks/matchup/raw/072ac999722ded50e8b2eeb649c75f091a8ecbcb/assets/2024_Pitching_Logs.xlsx" response = requests.get(url) response.raise_for_status() # 校验请求是否成功 df = pd.read_excel(BytesIO(response.content), usecols=["Name", "Date", "Opp", "W", "L", "IP", "BF", "H", "R", "ER", "HR", "BB", "SO","Pit"], engine="openpyxl")
额外排查步骤
- 验证GitHub文件路径:在仓库网页中点击目标文件,复制
Raw按钮的URL,确保与代码中一致。 - 检查Render文件存在性:进入Render项目控制台的
Shell,执行ls assets/命令确认文件存在。 - 确认依赖安装:
requirements.txt中需包含pandas、openpyxl、requests,Render会自动安装这些依赖。
内容的提问来源于stack exchange,提问作者Shawn Schreier
相关产品推荐
相关产品推荐

