Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa pagina spiega come risolvere i conflitti di dipendenza durante l'installazione di pacchetti PyPI personalizzati.
Il problema più comune con i pacchetti PyPI che potresti riscontrare in Cloud Composer sono i conflitti di dipendenza.
Quando specifichi un nuovo pacchetto PyPI personalizzato da installare, questo pacchetto o la relativa versione potrebbe causare conflitti di dipendenza con altri pacchetti PyPI personalizzati o pacchetti preinstallati nel tuo ambiente. In questo caso, l'operazione di aggiornamento dell'ambiente non va a buon fine e viene visualizzato un errore.
Errori di Cloud Build e di compilazione in cluster
Se si verifica un problema con i pacchetti, viene visualizzato il relativo messaggio di errore in due modi, a seconda del modo in cui è stato implementato l'ambiente:
Cloud Build. Un messaggio di errore e un link al log di Cloud Build. Ad esempio:
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 ...
Compilazioni in cluster. Un messaggio di errore e la posizione dei log di compilazione. Ad esempio:
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.
Visualizza il messaggio di errore dettagliato
Quando l'installazione di un pacchetto non riesce, pip
genera il messaggio di errore dettagliato.
Puoi trovare questo messaggio di errore nei log di compilazione.
Individua l'errore pip
nei log di Cloud Build
Puoi seguire il link nel messaggio di errore di Cloud Build o trovare i log di compilazione:
Individua i log di compilazione:
Nella Google Cloud console, vai alla pagina Cronologia build.
Seleziona la build non riuscita per visualizzarne i log.
Nel log di compilazione, trova il messaggio di errore di
pip
. Ad esempio: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.
Individua l'errore pip
nei log di compilazione all'interno del cluster
Individua i log di compilazione:
Nella Google Cloud console, vai alla pagina Ambienti.
Seleziona il tuo ambiente.
Apri la scheda Log.
Seleziona Tutti i log > Log di Composer > Build > Immagine di Worker e Scheduler.
Nell'elenco a discesa Gravità, seleziona Informazioni.
Nei log visualizzati:
Individua il messaggio di errore
installer.sh
. Ad esempio:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1
I messaggi di informazioni precedenti contengono l'errore
pip
dettagliato. Ad esempio: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.
Tempo di attesa durante l'installazione del pacchetto Python
Nelle versioni recenti, l'utilità pip
ha modificato il proprio comportamento durante il tentativo di soddisfare le dipendenze. Se non è possibile soddisfare le dipendenze specificate, pip
esamina tutte le versioni disponibili di un pacchetto.
Quando installi un pacchetto, si verifica quanto segue:
Se il pacchetto è già preinstallato nel tuo ambiente e le dipendenze Python che specifichi non richiedono modifiche, il pacchetto rimane invariato.
Esempio:
aiodebug==2.3.0
è installato e specifichiaiodebug
oaiodebug>=2
.Se il pacchetto non è già installato nel tuo ambiente o nonsoddisfa le dipendenze Python specificate,
pip
tenta di utilizzare la versione più recente che soddisfa le dipendenze. Si tratta dell'ultima versione del pacchetto se non ne hai specificata una o dell'ultima versione del pacchetto che soddisfa le limitazioni specificate.Esempio: se specifichi
aiodebug
, verrà installata la versione più recente (2.*.*). Se specifichiaiodebug<2
, verrà installata la versione 1.*.*.Se questa versione causa conflitti di dipendenza con i pacchetti preinstallati,
pip
esamina tutte le versioni disponibili del pacchetto per provare a soddisfare la dipendenza specificata. In questo caso, nel log di compilazione saranno visibili i seguenti messaggi: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.
Prima della modifica,
pip
non è riuscito a causa di un conflitto di dipendenza senza controllare altre versioni.
Esaminare tutte le versioni disponibili può richiedere molto tempo e portare a un downgrade dei pacchetti o a un timeout durante l'installazione del pacchetto Python.
I pacchetti preinstallati in Cloud Composer vengono aggiornati regolarmente alle versioni più recenti per motivi di sicurezza. Pertanto, un timeout può verificarsi anche quando esegui l'upgrade di un ambiente a una versione successiva di Cloud Composer.
Possibili soluzioni:
Aggiorna regolarmente le dipendenze Python personalizzate.
Utilizza PythonVirtualenvOperator per isolare gli snippet di codice che richiedono pacchetti in conflitto.
Conflitti con i pacchetti PyPI preinstallati
Alcuni conflitti di pacchetti si verificano tra i pacchetti PyPI personalizzati che installi e i pacchetti preinstallati.
Puoi visualizzare l'elenco completo dei pacchetti preinstallati per la tua versione di Cloud Composer nella pagina Versioni di Cloud Composer.
Per risolvere il problema, puoi:
Installa una versione diversa del pacchetto PyPI personalizzato.
Installa una versione diversa del pacchetto preinstallato. A tale scopo, installa un pacchetto PyPI personalizzato con il nome del pacchetto preinstallato e specifica la versione richiesta. Sconsigliamo di eseguire il downgrade dei pacchetti preinstallati.
Verifica se le versioni successive di Cloud Composer utilizzano una versione diversa del pacchetto preinstallato. Puoi verificare la presenza di potenziali conflitti dei pacchetti PyPI prima di eseguire l'upgrade dell'ambiente a una versione successiva di Cloud Composer.
Utilizza PythonVirtualenvOperator per isolare gli snippet di codice che richiedono pacchetti in conflitto.
Server di metadati non disponibile durante l'installazione dei pacchetti PyPI
Se il tuo ambiente utilizza un file pip.conf
personalizzato,
potresti riscontrare un problema quando non è possibile installare nuovi pacchetti PyPI nel
tuo ambiente. Nei log di Cloud Build relativi all'errore di installazione del pacchetto, puoi vedere il seguente messaggio di avviso:
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.
Questo problema è causato da un file pip.conf
che non consente l'accesso all'indice del pacchetto predefinito in https://pypi.org/simple
. Ad esempio, se il file pip.conf
consente di installare pacchetti solo da un repository Artifact Registry personalizzato a causa del parametro index-url
ridefinito, l'installazione dei pacchetti dall'indice dei pacchetti predefinito non è disponibile.
Per risolvere il problema, assicurati che l'indice del pacchetto https://pypi.org/simple
sia aggiunto al file pip.conf
. Ad esempio, se l'indice del pacchetto principale è definito nel parametro index-url
, aggiungi l'indice https://pypi.org/simple
nel parametro extra-index-url
.
Passaggi successivi
- Installazione delle dipendenze Python
- Risoluzione dei problemi relativi agli upgrade e agli aggiornamenti degli ambienti