Daa*_*ijn 3 python python-poetry
我目前有一个 Python3 项目,设置了 Poetry 作为主要的包管理器。除此之外,我还通过 Github 工作流设置了构建和一些自动化测试。我的包依赖于 Tensorflow,尽管自动化测试可以在没有它的情况下运行。不幸的是,每次 Github 工作流运行这些测试时都会安装 Tensorflow(相当大)。由于这些测试不需要 Tensorflow 并且我想加快构建速度,因此我想在以下情况下忽略 Tensorflow 依赖项poetry install从构建管道调用。
有人知道在使用 Poetry 时排除依赖项的方法吗?
想到的唯一其他方法是将tensorflow依赖项移动到一个额外的 category,在诗歌中看起来像这样:
$ poetry add --extras tensorflow
Run Code Online (Sandbox Code Playgroud)
这意味着它不会在您运行时安装poetry install,除非它是您明确安装的命名组的一部分。这可以通过将其添加到您的pyproject.toml:
[tool.poetry.extras]
runtime = ["tensorflow"] # any name goes, I chose "runtime" because it sounded like it'd make sense
Run Code Online (Sandbox Code Playgroud)
该列表可以使用您只在运行时需要的任何其他包进行扩展,而不是在测试期间。如果要安装代码以实际运行它,则必须先执行以下操作:
[tool.poetry.extras]
runtime = ["tensorflow"] # any name goes, I chose "runtime" because it sounded like it'd make sense
Run Code Online (Sandbox Code Playgroud)
这将干净地分离您的依赖项,您必须评估它在您的情况下是否有意义。根据经验,通常最好运行 hacks 来使测试工作而不是恶化客户体验,因此您当前的工作流程很可能比我刚刚编写的工作流程更好。