代码之家  ›  专栏  ›  技术社区  ›  Anaphory

在CI服务器上找不到Python包数据

  •  0
  • Anaphory  · 技术社区  · 3 年前

    首先 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]
    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'
    

    在相同的毒株静脉途径上。

    这里会出什么问题?

    0 回复  |  直到 3 年前
        1
  •  1
  •   ujlbu4    3 年前

    你几乎做对了,试着稍微更新一下你的清单。在以下任何一个例子中:

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

    正如你在 docs include 命令将文件定义为相对于项目根的路径(这就是为什么第一个示例从 src 文件夹)

    recursive-include 第一个参数应该是dir模式( glob-style ),所以最好包含星号

    推荐文章