【发布时间】: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