Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
本页面介绍如何在安装自定义 PyPI 软件包时排查依赖项冲突。
您在 Cloud Composer 中可能会遇到的 PyPI 软件包最常见问题是依赖项冲突。
当您指定要安装的新自定义 PyPI 软件包时,此软件包或其版本可能会导致与环境中其他自定义 PyPI 软件包或预安装的软件包发生冲突。在这种情况下,环境更新操作将失败并报错。
Cloud Build 和集群内构建错误
如果软件包出现问题,您可以通过两种方式之一获得错误消息,具体取决于环境的部署方式:
Cloud Build。一条错误消息和指向 Cloud Build 日志的链接。例如:
UPDATE operation on this environment failed 25 minutes ago with the following error message: Failed to install PyPI packages. Check the Cloud Build log at ...
集群内构建。一条错误消息和构建日志的位置。例如:
UPDATE operation on this environment failed 17 minutes ago with the following error message: Failed to install PyPI packages. Check the in-cluster build logs for details. They can be found in the Environment logs under the build-log-* log name.
查看详细错误消息
如果软件包安装失败,pip
会报告详细错误消息。您可以在构建日志中找到此错误消息。
在 Cloud Build 日志中查找 pip
错误
您可以点击 Cloud Build 错误消息中的链接,也可以查找构建日志:
查找构建日志:
在 Google Cloud 控制台中,前往构建记录页面。
选择失败的构建以查看其日志。
在构建日志中,查找来自
pip
的错误消息。例如:ERROR: apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you'll have google-cloud-logging 1.15.0 which is incompatible.
在集群内构建日志中查找 pip
错误
查找构建日志:
在 Google Cloud 控制台中,前往环境页面。
选择您的环境。
打开日志标签页。
选择所有日志 >Composer 日志 >构建 > 员工和调度器映像。
在严重程度下拉列表中,选择信息。
在显示的日志中:
查找
installer.sh
错误消息。例如:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1
上述信息消息包含详细的
pip
错误。例如:apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you have google-cloud-logging 1.15.0.
与预安装的 PyPI 软件包冲突
您安装的自定义 PyPI 软件包与预安装的软件包之间会发生一些软件包冲突。
您可以在 Cloud Composer 版本页面上查看 Cloud Composer 版本的预安装软件包的完整列表。
如需解决此问题,您可以执行以下操作:
安装其他版本的自定义 PyPI 软件包。
安装其他版本的预安装软件包。为此,请使用预装软件包的名称安装自定义 PyPI 软件包并指定所需版本。我们不建议您降级预安装的软件包。
查看以后的 Cloud Composer 版本是否使用不同的 预安装软件包的版本。在将环境升级到更高版本的 Cloud Composer 之前,您可以先检查是否存在潜在的 PyPI 软件包冲突。
使用 PythonVirtualenvOperator 隔离那些需要存在冲突的软件包的代码段
安装 PyPI 软件包时,元数据服务器不可用
如果您的环境使用自定义 pip.conf
文件,
那么当无法安装新的 PyPI 软件包时,
您的环境在与软件包安装错误相关的 Cloud Build 日志中,您会看到以下警告消息:
WARNING: Compute Engine Metadata server unavailable on attempt 3 of 3. Reason:
timed out
WARNING: Authentication failed using Compute Engine authentication due to
unavailable metadata server.
此问题是由不允许访问 pip.conf
文件引起的
默认软件包索引
http://pypi.org/simple
。例如,如果您的 pip.conf
文件仅允许从自定义 Artifact Registry 仓库安装软件包(因为重新定义了 index-url
参数),则无法从默认软件包索引安装软件包。
要解决此问题,请确保将 http://pypi.org/simple
软件包编入索引
会添加到您的 pip.conf
文件中。例如,如果您的主要软件包索引在 index-url
参数中定义,请在 extra-index-url
参数中添加 http://pypi.org/simple
索引。