apache-airflow-backport-providers-google 无法安装 apache-airflow(1.10.12)

问题描述

我们当前系统使用 apache-airflow 1.10.12。我们需要来自气流 2.* 中可用的提供者的一些类。气流文档建议使用 backport 包在气流 1.10 中使用这些类。这将允许我们在不跳转到气流 2 的情况下测试新类。 但是当我在核心气流之后安装 backport 依赖项时,我收到以下错误: 抛出一堆警告和错误后,“无法添加包,将 pyproject.toml 还原为其原始内容”。

您以前是否遇到过这种情况,并且无论如何都能够解决它?

为了重新创建这些步骤,这是我所做的:

  1. poetry init
  2. poetry env use python3
  3. poetry shell
  4. poetry add apache-airflow="1.10.12"
  5. poetry add apache-airflow-backport-providers-google(这是前面提到的消息引发大量错误的地方)。

解决方法

首先,Airflow 1.10.* 已于 2021 年 6 月 17 日停产。社区不再支持它,也不会再收到任何修复程序 - 甚至不会收到关键安全修复程序。事实上,Airflow 2 中已经有安全修复程序已经修复,但它们在 1.10 中没有修复并且永远不会修复,因此您应该尽快升级到 Airflow 2,否则您的业务将面临风险。您可以在两周前在 Airflow 峰会上的讨论小组中了解更多信息:Keep your Airflow Secure

现在不升级到 Airflow 2 是一个非常糟糕的主意(就像任何其他过时的软件一样),尤其是考虑到所有勒索软件攻击和供应链攻击。

其次,您不应该使用诗歌来安装 Airflow,即使是最新版本也不行。不支持。 Airflow 具有复杂的依赖关系,如果您想以可重现的方式安装气流,则需要使用 pipconstraints 机制。

Poetry 对依赖项解析有非常固执和简单化的看法,它没有约束支持,您将无法使用约束。在最新的文档中我们特别提到不建议您使用诗歌来安装气流:https://airflow.apache.org/docs/apache-airflow/stable/installation.html#installation-tools

另一方面,pip 最近在解析器和一般解析功能以及避免/解决冲突方面取得了巨大进步。

使用 1.10.12 安装气流的官方方法在这里。只需按照它: https://airflow.apache.org/docs/apache-airflow/1.10.12/installation.html

此外,最新版本的反向移植提供程序可能会产生其他依赖性问题,因为它已在 6 个月前停止发布。在这种情况下,您可以尝试:

另请注意,backport providers 已在 6 个月前停止发布,并且 airflow providers google 中进行了许多修复和改进,这使得迁移到 Airflow 2 变得更加重要。延迟的时间越长不可避免,您将遇到的问题越多(除上述安全问题外)