诗歌忽略 pyproject.toml 中的依赖

Poetry ignore dependency in pyproject.toml

我目前有一个 Python3 项目,该项目以 Poetry 作为主要包管理器。除此之外,我还通过 Github 工作流程设置了构建和一些自动化测试。我的包依赖于 Tensorflow,尽管自动化测试可以 运行 没有它。不幸的是,每次 Github 工作流程 运行 进行这些测试时,都会安装 Tensorflow(相当大)。由于这些测试不需要 Tensorflow,而且我想加快构建速度,因此当从构建管道调用 poetry install 时,我想忽略 Tensorflow 依赖项。

有人知道在使用 Poetry 时排除依赖项的方法吗?

我目前通过自动从每个构建的 pyproject.toml 中删除 Tensorflow 行来解决这个问题。之后,在安装依赖之前,我也再次锁定诗歌。这是一种解决方法,因此我仍在寻找更清洁的解决方案。

sed '/tensorflow/d' pyproject.toml > pyproject2.toml
mv pyproject2.toml pyproject.toml
cat pyproject.toml
pip install poetry
poetry run pip install --upgrade pip
poetry lock
poetry install

想到的唯一其他方法是将 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

这将清楚地分离您的依赖项,您必须评估它对您的情况是否有意义。根据经验,运行 hack 使测试正常工作通常比恶化客户体验更好,因此您当前的工作流程很有可能比我刚刚写的更好。