Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Cette page explique comment résoudre les conflits de dépendance lors de l'installation de packages PyPI personnalisés.
Le problème le plus courant que vous pouvez rencontrer avec les packages PyPI dans Cloud Composer est le conflit de dépendance.
Lorsque vous spécifiez un nouveau package PyPI personnalisé à installer, ce package ou sa version peuvent provoquer des conflits de dépendance avec d'autres packages PyPI personnalisés ou des packages préinstallés dans votre environnement. Dans ce cas, l'opération de mise à jour de l'environnement échoue et renvoie une erreur.
Erreurs Cloud Build et de compilation dans le cluster
Si un problème survient au niveau des packages, vous recevez le message d'erreur de deux manières, selon la manière dont votre environnement est déployé :
Cloud Build. Un message d'erreur et un lien vers le journal Cloud Build Exemple :
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 ...
Compilations au sein du cluster. Message d'erreur et emplacement des journaux de compilation. Exemple :
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.
Consulter le message d'erreur détaillé
Lorsqu'une installation de package échoue, pip
rapporte un message d'erreur détaillé.
Ce message d'erreur s'affiche dans les journaux de compilation.
Recherchez l'erreur pip
dans les journaux Cloud Build
Vous pouvez suivre le lien dans le message d'erreur Cloud Build ou accéder aux journaux de compilation :
Accédez aux journaux de compilation :
Dans la console Google Cloud , accédez à la page Historique de compilation.
Sélectionnez la compilation ayant échoué pour afficher ses journaux.
Dans le journal de compilation, recherchez le message d'erreur de
pip
. Exemple :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.
Rechercher l'erreur pip
dans les journaux de compilation du cluster
Accédez aux journaux de compilation :
Dans la console Google Cloud , accédez à la page Environnements.
Sélectionnez votre environnement.
Ouvrez l'onglet Journaux.
Sélectionnez Tous les journaux > Journaux Composer > Compilations > Image du Worker et du Scheduler.
Dans la liste déroulante Gravité, sélectionnez Info.
Dans les journaux affichés :
Recherchez le message d'erreur
installer.sh
. Exemple :The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1
Les messages d'information précédents comportent l'erreur
pip
détaillée. Exemple :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.
Délais d'attente lors de l'installation de packages Python
Dans les versions récentes, l'utilitaire pip
a modifié son comportement lorsqu'il tente de satisfaire les dépendances. Si les dépendances spécifiées ne peuvent pas être satisfaites, pip
parcourt toutes les versions disponibles d'un package.
Lorsque vous installez un package, les opérations suivantes se produisent :
Si le package est déjà préinstallé dans votre environnement et que les dépendances Python que vous spécifiez ne nécessitent aucune modification, le package reste tel quel.
Exemple :
aiodebug==2.3.0
est installé et vous spécifiezaiodebug
ouaiodebug>=2
.Si le package n'est pas déjà installé dans votre environnement ou s'il ne répond pas aux dépendances Python que vous spécifiez,
pip
tente d'utiliser la dernière version qui répond aux dépendances. Il s'agit de la dernière version du package si vous n'en avez pas spécifié, ou de la dernière version du package qui respecte les restrictions spécifiées.Exemple : Si vous spécifiez
aiodebug
, la dernière version sera installée (2.*.*). Si vous spécifiezaiodebug<2
, la version 1.*.* sera installée.Si cette version provoque des conflits de dépendance avec les packages préinstallés,
pip
parcourt toutes les versions disponibles du package pour tenter de satisfaire la dépendance spécifiée. Dans ce cas, les messages suivants s'affichent dans le journal de compilation :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.
Avant la modification,
pip
échouait en raison d'un conflit de dépendances sans vérifier les autres versions.
Parcourir toutes les versions disponibles peut prendre beaucoup de temps et entraîner une rétrogradation des packages ou un délai d'expiration lors de l'installation du package Python.
Les packages préinstallés dans Cloud Composer sont régulièrement mis à jour vers les dernières versions pour des raisons de sécurité. Par conséquent, un délai avant expiration peut également se produire lorsque vous mettez à niveau un environnement vers une version ultérieure de Cloud Composer.
Solutions possibles :
Mettez régulièrement à jour les dépendances Python personnalisées.
Utilisez PythonVirtualenvOperator pour isoler les extraits de code qui nécessitent des packages incompatibles.
Conflits avec les packages PyPI préinstallés
Des conflits de packages peuvent se produire entre les packages personnalisés PyPI que vous installez et les packages préinstallés.
Vous pouvez consulter la liste complète des packages préinstallés pour votre version de Cloud Composer sur la page Versions Cloud Composer.
Pour résoudre ce problème, vous pouvez effectuer les opérations suivantes :
Installez une autre version du package PyPI personnalisé.
Installez une autre version du package préinstallé. Pour ce faire, installez un package PyPI personnalisé avec le nom du package préinstallé et spécifiez la version requise. Nous vous déconseillons de revenir à une version antérieure des packages préinstallés.
Vérifiez si les versions Cloud Composer ultérieures utilisent une version différente du package préinstallé. Vous pouvez vérifier les conflits potentiels de packages PyPI avant de mettre à niveau votre environnement vers une version ultérieure de Cloud Composer.
Utilisez PythonVirtualenvOperator pour isoler les extraits de code qui nécessitent des packages incompatibles.
Serveur de métadonnées indisponible lors de l'installation de packages PyPI
Si votre environnement utilise un fichier pip.conf
personnalisé, vous pouvez rencontrer un problème lorsqu'aucun nouveau package PyPI ne peut être installé dans votre environnement. Dans les journaux Cloud Build liés à l'erreur d'installation du package, le message d'avertissement suivant peut s'afficher :
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.
Ce problème est dû à un fichier pip.conf
qui n'autorise pas l'accès à l'index de package par défaut à l'adresse https://pypi.org/simple
. Par exemple, si votre fichier pip.conf
n'autorise l'installation de packages qu'à partir d'un dépôt Artifact Registry personnalisé en raison du paramètre index-url
redéfini, l'installation de packages à partir de l'index de packages par défaut n'est pas disponible.
Pour résoudre ce problème, assurez-vous que l'index de package https://pypi.org/simple
est ajouté à votre fichier pip.conf
. Par exemple, si votre index de package principal est défini dans le paramètre index-url
, ajoutez l'index https://pypi.org/simple
dans le paramètre extra-index-url
.
Étapes suivantes
- Installer des dépendances Python
- Résoudre les problèmes liés aux mises à jour et aux mises à niveau d'environnement