You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python包内置数据文件本地正常,GitHub Actions CI提示找不到如何解决?

问题原因

  1. 最常见原因:你的.gitignore规则中包含了.zip后缀的文件匹配,导致clics3-network.gml.zip没有被提交到Git仓库。本地环境存在该文件所以构建正常,但是GitHub Actions拉取的代码仓库中没有这个文件,打包时无法将其包含到安装包中,最终触发文件不存在的报错。
  2. 文件名拼写不一致:你本地测试时提到的文件名为clics2-network.gml.zip,但加载代码和MANIFEST.in中写的是clics3-network.gml.zip,需要确认实际文件名和配置、代码中的写法完全一致。
  3. MANIFEST.in兼容问题:部分旧版本setuptools对recursive-include规则的解析存在异常,会导致匹配到的文件没有被正确打入安装包。
  4. 资源加载接口兼容问题:pkg_resources是较老旧的资源加载接口,在Python 3.10+的部分环境中存在资源路径解析异常的情况。

解决办法

  • 优先确认文件提交状态:检查.gitignore是否屏蔽了.zip格式文件,确认lexedata/data/clics3-network.gml.zip已经被正常提交到Git仓库,可直接在GitHub仓库的对应路径下查看文件是否存在。
  • 优化打包配置:放弃MANIFEST.in配置,直接在setup.cfg中明确指定包数据,避免规则解析异常,修改后配置如下:
[options]
include_package_data = False
packages = find:
package_data =
    lexedata = data/clics3-network.gml.zip
  • 替换资源加载方式:使用Python3.7+标准库自带的importlib.resources替代老旧的pkg_resources,加载代码修改为:
# 兼容Python3.9及以上版本
from importlib.resources import open_binary
import lexedata.data

with open_binary(lexedata.data, "clics3-network.gml.zip") as f:
    # 处理文件逻辑
    pass

如果需要兼容3.9以下的Python版本,在依赖中添加importlib-resources; python_version < "3.9"即可。

  • 新增CI诊断步骤:可以在tox配置的commands最前端添加一行ls {toxinidir}/lexedata/data/,执行CI时可直接从日志中看到对应路径下的文件列表,快速定位是文件缺失还是打包环节的问题。

内容的提问来源于stack exchange,提问作者Anaphory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:24:05