使用tox与pyproject.toml时,Python包内config.xml无法找到的问题求助
解决tox环境中找不到config.xml文件的问题
问题出在pyproject.toml不会自动包含非Python文件,你需要显式配置构建工具(比如setuptools)将config.xml纳入包的分发内容,这样tox在安装你的包时才会把文件同步到测试环境中。具体操作如下:
1. 在pyproject.toml中配置包数据
假设你的Python包名为regression_model(和你提到的仓库结构一致),在pyproject.toml中添加以下配置:
[tool.setuptools.package-data] # 指定包名对应的要包含的文件 regression_model = ["config.xml"]
如果需要包含包内所有.xml文件,可以写成:
regression_model = ["*.xml"]
2. 确保构建后端配置正确
确认pyproject.toml的[build-system]部分指定了足够新的setuptools版本(61.0+才支持通过pyproject.toml配置package-data):
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
3. 验证tox安装逻辑
检查你的tox.ini配置,确保测试环境是通过安装你的包而非直接复制文件的方式构建的。比如testenv部分应包含类似配置:
[testenv] commands = pytest deps = pytest install_command = pip install {opts} {packages} .
这样tox会在创建测试环境时,先构建包含config.xml的包,再安装到.tox目录下,你就能在环境的site-packages中找到这个文件了。
4. 本地预验证
可以先在本地执行pip install -e .,然后通过Python代码验证文件是否能被读取:
import pkgutil data = pkgutil.get_data("regression_model", "config.xml") print(data)
如果能正常输出文件内容,说明配置生效,tox环境中也会同步这个结果。
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

