python - 如何声明无法单独构建的 tox 依赖项
问题描述
我正在使用 tox 来测试我的包,但是我的依赖项之一不能单独安装。它具有构建时依赖项,但没有 pyproject.toml 文件。一个明显的解决方案是分叉依赖项并添加一个 pyproject.toml,但理想情况下,我不会仅仅为了测试我的代码而修改第三方依赖项。
有没有办法将具有(未声明的)构建时依赖项的依赖项安装到 tox 测试环境中?
例如 tox.ini
[tox]
minversion = 3.23.0
envlist = py36
deps =
numpy
cython
[testenv]
deps = madmom==0.16.1
解决方案
您可以使用 docker 安装所有非 pip 依赖项,然后设置tox.allowlist_externals
要在command
参数中使用的二进制文件。您可以将其与docker 多阶段构建结合使用,以确保构建时间依赖项不会出现在最终的 docker 映像中。
或者您可以使用 tox配置选项来修改安装流程。您可以考虑修改commands_pre
以在运行之前执行您需要的任何操作commands
。
例如
[tox]
allowlist_externals =
apt-get
[testenv]
commands_pre =
apt-get install build-essential
commands =
pytest
您仍然需要将第二种方法与tox.allowlist_externals
安装命令结合使用。
选项 2 有点粗略。如果numpy
是您所需要的,那么确保apt-get install build-essential
在运行之前运行tox
可能就是您所需要的。
推荐阅读
- sql - Access DB 中不支持 SQL Server 视图
- javascript - JavaScript - 获取单个字符的亮度
- python - 程序正在识别我给它的每一个输入都是正确的
- python - Python 程序循环
- spring - 邮递员正确地 url 编码 ø 但 RestTemplate 不会
- sql-server - 锁定行以进行读取和更新 - 一次只有一个进程应该更新一行
- c# - Unity - 如何保存和加载列表(二进制保存和加载)
- firebase - 使用 Github 操作失败时重试 Firebase 功能部署失败
- c# - ContextMenuStrip 中的 DateTimePicker 控件
- php - 我无法将数据从 php 插入 mysql