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