【问题标题】:Python package-data not found on CI server在 CI 服务器上找不到 Python 包数据
【发布时间】:2021-12-19 12:24:57
【问题描述】:

对于一个python project,我想随包发送一个数据文件。 在various (and partially contradictory) advice on the mess that is Python package data 之后,我最终尝试了不同的东西,并通过以下设置让它在我的机器上本地工作。

我的setup.cfg 包含其他不重要的内容,

[options]
include_package_data = True

并且没有package_data 或其他与数据相关的键。我的MANIFEST.in 状态

recursive-include lexedata clics3-network.gml.zip

我的setup.py 基本上是光秃秃的

from setuptools import setup
readline = "readline"
setup(extras_require={"formatguesser": [readline]})

要加载文件,我使用

pkg_resources.resource_stream("lexedata", "data/clics3-network.gml.zip")

我使用 tox 进行测试,配置为

[tox]
isolated_build = True
envlist = general
[testenv]
passenv = CI
deps =
  codecov
  pytest
  pytest-cov
commands =
  pytest --doctest-modules --cov=lexedata {envsitepackagesdir}/lexedata
  pytest --cov=lexedata --cov-append test/
  codecov

在我的本地机器上,当我运行pip install .时,数据文件lexedata/data/clics2-network.gml.zip正确存放在对应虚拟环境的site-packages/lexeadata/data目录中,tox将其打包在.tox/dist/lexedata-1.0.0b3.tar.gz中以及它的venv站点包目录.tox/general/lib/python3.8/site-packages/lexedata/data/

但是,在我正在测试的所有 Python 3 版本上,使用 Github 操作的持续集成都失败了

UNEXPECTED EXCEPTION: FileNotFoundError(2, 'No such file or directory')
FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/work/lexedata/lexedata/.tox/general/lib/python3.10/site-packages/lexedata/data/clics3-network.gml.zip'

相当于相同的 tox venv 路径。

这里可能出了什么问题?

【问题讨论】:

  • 这是my take on package data,如果有帮助的话。不知道你的情况是怎么回事。无论如何,如果您的数据文件位于正确的位置,我建议您构建发行版(sdist 和 wheel)并查看其中的内容。在尝试之间,请确保清洁所有物品。

标签: python continuous-integration python-packaging tox


【解决方案1】:

您几乎做对了,尝试将您的 MANIFEST.in 稍微更新为以下任何示例:

  • include src/lexedata/data/*.zip
  • recursive-include src/* *.zip
  • recursive-include **/data clics3-network.gml.zip

您可以在docs 中找到include 命令将文件定义为相对于项目根目录的路径(这就是第一个示例从 src 文件夹开始的原因)

recursive-include 期望第一个参数是 dir-pattern (glob-style),所以最好包含星号

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2011-05-29
    • 2020-09-24
    相关资源
    最近更新 更多