Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Auf dieser Seite wird beschrieben, wie Sie Abhängigkeitskonflikte bei der Installation benutzerdefinierter PyPI-Pakete beheben können.
Das häufigste Problem bei PyPI-Paketen, die in Managed Airflow auftreten können, sind Abhängigkeitskonflikte.
Wenn Sie ein neues benutzerdefiniertes PyPI-Paket angeben, das installiert werden soll, können diese Pakete oder deren Version Abhängigkeiten in Konflikt mit anderen benutzerdefinierten PyPI-Paketen oder vorinstallierten Paketen in Ihrer Umgebung verursachen. In diesem Fall schlägt die Aktualisierung der Umgebung mit einem Fehler fehl.
Cloud Build-Fehler und Build-Fehler im Cluster
Wenn Probleme mit Paketen auftreten, erhalten Sie je nach Art der Bereitstellung Ihrer Umgebung die Fehlermeldungen auf zwei Arten:
Cloud Build Eine Fehlermeldung und ein Link zum Cloud Build-Log. Beispiel:
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 ...In-Cluster-Builds: Eine Fehlermeldung und der Speicherort von Build-Logs. Beispiel:
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.
Detaillierte Fehlermeldung ansehen
Wenn eine Paketinstallation fehlschlägt, meldet pip die detaillierte Fehlermeldung.
Diese Fehlermeldung finden Sie in den Build-Logs.
Den pip-Fehler in Cloud Build-Logs suchen
Sie können auf den Link in der Cloud Build-Fehlermeldung klicken oder Build-Logs suchen:
Suchen Sie Build-Logs:
Rufen Sie in der Google Cloud Console die Seite Build-Verlauf auf.
Wählen Sie den fehlgeschlagenen Build aus, um dessen Logs aufzurufen.
Suchen Sie im Build-Log nach der Fehlermeldung von
pip. Beispiel: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.
Den pip-Fehler in Build-Logs im Cluster suchen
Suchen Sie Build-Logs:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.
Wählen Sie Ihre Umgebung aus.
Öffnen Sie den Tab Logs.
Wählen Sie Alle Logs > Composer-Logs > Builds > Worker- und Scheduler-Image aus.
Wählen Sie in der Drop-down-Liste Schweregrad die Option Info aus.
In den angezeigten Logs:
Suchen Sie nach der Fehlermeldung
installer.sh. Beispiel:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1Die Infonachrichten davor haben den detaillierten
pip-Fehler. Beispiel: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.
Zeitüberschreitungen bei der Installation von Python-Paketen
In den letzten Versionen hat sich das Verhalten des pip-Dienstprogramms beim Versuch, Abhängigkeiten zu erfüllen, geändert. Wenn angegebene Abhängigkeiten nicht erfüllt werden können, durchläuft pip alle verfügbaren Versionen eines Pakets.
Wenn Sie ein Paket installieren, geschieht Folgendes:
-
Beispiel:
aiodebug==2.3.0ist installiert und Sie gebenaiodebugoderaiodebug>=2an. Wenn das Paket noch nicht in Ihrer Umgebung installiert ist oder die von Ihnen angegebenen Python-Abhängigkeiten nicht erfüllt, versucht
pip, die neueste Version zu verwenden, die die Abhängigkeiten erfüllt. Dies ist entweder die neueste Version des Pakets, wenn Sie keine Version angegeben haben, oder die neueste Version des Pakets, die die angegebenen Einschränkungen erfüllt.Beispiel: Wenn Sie
aiodebugangeben, wird die neueste Version (2.*.*) installiert. Wenn Sieaiodebug<2angeben, wird 1.*.* installiert.Wenn diese Version Abhängigkeitskonflikte mit vorinstallierten Paketen verursacht, durchläuft
pipalle verfügbaren Versionen des Pakets, um die angegebene Abhängigkeit zu erfüllen. In diesem Fall werden die folgenden Meldungen im Build-Log angezeigt:INFO: pip is looking at multiple versions of PYTHON_PACKAGE_NAME to determine which version is compatible with other requirements. This could take a while.Vor der Änderung ist
pipmit einem Abhängigkeitskonflikt fehlgeschlagen, ohne andere Versionen zu prüfen.
Das Durchlaufen aller verfügbaren Versionen kann viel Zeit in Anspruch nehmen und zu einem Downgrade von Paketen oder zu einer Zeitüberschreitung bei der Installation von Python-Paketen führen.
Vorinstallierte Pakete in Managed Airflow werden aus Sicherheitsgründen regelmäßig auf die neuesten Versionen aktualisiert. Daher kann es auch zu einer Zeitüberschreitung kommen, wenn Sie eine Umgebung auf eine neuere Managed Airflow-Version aktualisieren.
Mögliche Lösungen :
Benutzerdefinierte Python-Abhängigkeiten regelmäßig aktualisieren.
Verwenden Sie PythonVirtualenvOperator , um Code-Snippets zu isolieren, für die in Konflikt stehende Pakete erforderlich sind.
Konflikte mit vorinstallierten PyPI-Paketen
Zwischen den von Ihnen installierten benutzerdefinierten PyPI-Paketen und den vorinstallierten Paketen treten einige Paketkonflikte auf.
Eine vollständige Liste der vorinstallierten Pakete für Ihre Version von Managed Airflow finden Sie auf der Managed Airflow-Versionen Seite.
So können Sie lösen dieses Problem:
Installieren Sie eine andere Version des benutzerdefinierten PyPI-Pakets.
Installieren Sie eine andere Version des vorinstallierten Pakets. Installieren Sie dazu ein benutzerdefiniertes PyPI-Paket mit dem Namen des vorinstallierten Pakets und geben Sie die erforderliche Version an. Wir empfehlen, kein Downgrade vorinstallierter Pakete durchzuführen.
Prüfen Sie, ob später Managed Airflow-Versionen eine andere Version des vorinstallierten Pakets verwenden. Sie können vor dem Upgrade Ihrer Umgebung auf eine neuere Version von Managed Airflow nach potenziellen PyPI-Paketkonflikten suchen.
Verwenden Sie PythonVirtualenvOperator um Code-Snippets zu isolieren, für die in Konflikt stehende Pakete erforderlich sind.
Metadatenserver bei der Installation von PyPI-Paketen nicht verfügbar
Wenn Ihre Umgebung eine benutzerdefinierte pip.conf Datei,
verwendet, kann es zu einem Problem kommen, wenn keine neuen PyPI-Pakete in
Ihrer Umgebung installiert werden können. In Cloud Build-Logs im Zusammenhang mit dem Fehler bei der Paketinstallation wird die folgende Warnmeldung angezeigt:
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.
Dieses Problem wird durch eine pip.conf-Datei verursacht, die den Zugriff auf den
Standardpaketindex
unter https://pypi.org/simple nicht zulässt. Wenn Ihre pip.conf-Datei beispielsweise aufgrund des neu definierten Parameters index-url nur die Installation von Paketen aus einem benutzerdefinierten Artifact Registry-Repository zulässt, ist die Installation von Paketen aus dem Standardpaketindex nicht möglich.
Fügen Sie zur Behebung dieses Problems den Paketindex https://pypi.org/simple zu Ihrer pip.conf-Datei hinzu. Wenn Ihr primärer Paketindex
im Parameter index-url definiert ist, fügen Sie den https://pypi.org/simple
Index im Parameter extra-index-url hinzu.