问题描述
我们当前系统使用 apache-airflow 1.10.12。我们需要来自气流 2.* 中可用的提供者的一些类。气流文档建议使用 backport 包在气流 1.10 中使用这些类。这将允许我们在不跳转到气流 2 的情况下测试新类。 但是当我在核心气流之后安装 backport 依赖项时,我收到以下错误: 抛出一堆警告和错误后,“无法添加包,将 pyproject.toml 还原为其原始内容”。
您以前是否遇到过这种情况,并且无论如何都能够解决它?
为了重新创建这些步骤,这是我所做的:
poetry init
poetry env use python3
poetry shell
poetry add apache-airflow="1.10.12"
-
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 具有复杂的依赖关系,如果您想以可重现的方式安装气流,则需要使用 pip
和 constraints
机制。
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 个月前停止发布。在这种情况下,您可以尝试:
-
pip install pip==20.2.4
在安装气流之前 - 您可能会避免一些在我们发布 1.10.12 和向后移植后已解决的冲突。 - 通过在安装时指定
backport providers
来尝试一些早期版本的==<version
。您可以在此处查看所有版本:https://pypi.org/project/apache-airflow-backport-providers-google/#history
另请注意,backport providers
已在 6 个月前停止发布,并且 airflow providers google
中进行了许多修复和改进,这使得迁移到 Airflow 2 变得更加重要。延迟的时间越长不可避免,您将遇到的问题越多(除上述安全问题外)