Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página explica como resolver problemas de conflitos de dependências ao instalar pacotes PyPI personalizados.
O problema mais comum com os pacotes PyPI que pode encontrar no Cloud Composer são conflitos de dependências.
Quando especifica um novo pacote PyPI personalizado para instalar, este pacote ou a respetiva versão podem causar conflitos de dependências com outros pacotes PyPI personalizados ou pacotes pré-instalados no seu ambiente. Neste caso, a operação de atualização do ambiente falha com um erro.
Erros de compilação no cluster e no Cloud Build
Se ocorrer um problema com os pacotes, recebe a mensagem de erro sobre o mesmo de duas formas, consoante a forma como o seu ambiente está implementado:
Cloud Build. Uma mensagem de erro e um link para o registo do Cloud Build. Por exemplo:
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 ...
Compilações no cluster. Uma mensagem de erro e a localização dos registos de compilação. Por exemplo:
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.
Ver a mensagem de erro detalhada
Quando a instalação de um pacote falha, o pip
comunica a mensagem de erro detalhada.
Pode encontrar esta mensagem de erro nos registos de compilação.
Localize o erro pip
nos registos do Cloud Build
Pode seguir o link na mensagem de erro do Cloud Build ou localizar os registos de compilação:
Localize os registos de compilação:
Na Google Cloud consola, aceda à página Histórico de compilações.
Selecione a compilação com falha para ver os respetivos registos.
No registo de compilação, encontre a mensagem de erro de
pip
. Por exemplo: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.
Localize o erro pip
nos registos de compilação no cluster
Localize os registos de compilação:
Na Google Cloud consola, aceda à página Ambientes.
Selecione o seu ambiente.
Abra o separador Registos.
Selecione Todos os registos > Registos do compositor > Compilações > Imagem do trabalhador e do agendador.
Na lista pendente Gravidade, selecione Informações.
Nos registos apresentados:
Localize a mensagem de erro
installer.sh
. Por exemplo:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1
As mensagens de informações anteriores têm o erro
pip
detalhado. Por exemplo: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.
Tempos limite durante a instalação do pacote Python
Nas versões recentes, o utilitário pip
alterou o respetivo comportamento ao tentar
satisfazer dependências. Se não for possível satisfazer as dependências especificadas, o pip
passa por todas as versões disponíveis de um pacote.
Quando instala um pacote, ocorre o seguinte:
Se o pacote já estiver pré-instalado no seu ambiente e as dependências do Python que especificar não exigirem alterações, o pacote permanece como está.
Exemplo:
aiodebug==2.3.0
está instalada e especificaaiodebug
ouaiodebug>=2
.Se o pacote ainda não estiver instalado no seu ambiente ou não satisfizer as dependências do Python que especificar, o
pip
tenta usar a versão mais recente que satisfaz as dependências. Esta é a versão mais recente do pacote se não tiver especificado uma versão, ou a versão mais recente do pacote que cumpre as restrições especificadas.Exemplo: se especificar
aiodebug
, é instalada a versão mais recente (2.*.*). Se especificaraiodebug<2
, é instalada a versão 1.*.*.Se esta versão causar conflitos de dependência com pacotes pré-instalados, o gestor de pacotes
pip
analisa todas as versões disponíveis do pacote para tentar satisfazer a dependência especificada. Quando tal acontece, as seguintes mensagens ficam visíveis no registo de compilação: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.
Antes da alteração, a instalação do
pip
falhava com um conflito de dependência sem verificar outras versões.
A análise de todas as versões disponíveis pode demorar muito tempo e levar a uma atualização inferior dos pacotes ou a um limite de tempo durante a instalação do pacote Python.
Os pacotes pré-instalados no Cloud Composer são atualizados regularmente para as versões mais recentes por motivos de segurança. Por conseguinte, também pode ocorrer um limite de tempo quando atualiza um ambiente para uma versão posterior do Cloud Composer.
Possíveis soluções:
Atualize regularmente as dependências personalizadas do Python.
Use PythonVirtualenvOperator para isolar fragmentos de código que requerem pacotes em conflito.
Conflitos com pacotes PyPI pré-instalados
Alguns conflitos de pacotes ocorrem entre os pacotes PyPI personalizados que instala e os pacotes pré-instalados.
Pode ver a lista completa de pacotes pré-instalados para a sua versão do Cloud Composer na página Versões do Cloud Composer.
Para resolver este problema, pode:
Instale uma versão diferente do pacote PyPI personalizado.
Instale uma versão diferente do pacote pré-instalado. Para tal, instale um pacote PyPI personalizado com o nome do pacote pré-instalado e especifique a versão necessária. Não recomendamos a desatualização de pacotes pré-instalados.
Verifique se as versões posteriores do Cloud Composer usam uma versão diferente do pacote pré-instalado. Pode verificar potenciais conflitos de pacotes PyPI antes de atualizar o seu ambiente para uma versão posterior do Cloud Composer.
Use PythonVirtualenvOperator para isolar fragmentos de código que requerem pacotes em conflito.
Servidor de metadados indisponível ao instalar pacotes PyPI
Se o seu ambiente usar um ficheiro pip.conf
personalizado,
pode ter um problema quando não for possível instalar novos pacotes PyPI no seu ambiente. Nos registos do Cloud Build relacionados com o erro de instalação do pacote, pode ver a seguinte mensagem de aviso:
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.
Este problema é causado por um ficheiro pip.conf
que não permite o acesso ao
índice de pacotes predefinido
em https://pypi.org/simple
. Por exemplo, se o ficheiro pip.conf
permitir apenas
a instalação de pacotes a partir de um repositório do Artifact Registry personalizado devido ao
parâmetro index-url
redefinido, a instalação de pacotes a partir do
índice de pacotes predefinido não está disponível.
Para resolver este problema, certifique-se de que o https://pypi.org/simple
índice do pacote
é adicionado ao ficheiro pip.conf
. Por exemplo, se o índice do pacote principal estiver definido no parâmetro index-url
, adicione o índice https://pypi.org/simple
no parâmetro extra-index-url
.