Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Nesta página, explicamos como solucionar conflitos de dependência ao instalar pacotes PyPI personalizados.
Os problemas mais comuns com os pacotes PyPI que podem ocorrer no Cloud Composer são conflitos de dependência.
Quando você especifica um novo pacote PyPI personalizado a ser instalado, esse pacote ou a versão dele podem causar conflitos de dependência com outros pacotes PyPI personalizados ou pacotes pré-instalados no ambiente. Nesse caso, a operação de atualização do ambiente falha com um erro.
Erros de build do Cloud Build e no cluster
Se ocorrer um problema com os pacotes, você receberá uma mensagem de erro de acordo com a maneira como o ambiente está implantado:
Cloud Build. Uma mensagem de erro e um link para o registro do Cloud Build. 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 ...
Builds no cluster. Uma mensagem de erro e o local dos registros do build. 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.
Veja a mensagem de erro detalhada
Quando uma instalação de pacote falha, o pip
informa a mensagem de erro detalhada.
Essa mensagem de erro fica nos registros do build.
Localizar o erro de pip
nos registros do Cloud Build
Clique no link da mensagem de erro do Cloud Build ou localize os registros do build:
Localize os registros do build:
No Google Cloud console, acesse a página Histórico de builds.
Selecione o build com falha para ver os registros.
No registro do build, localize a mensagem de erro de
pip
. 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 registros de criação no cluster.
Localize os registros do build:
No console Google Cloud , acesse a página Ambientes.
Selecione o ambiente.
Abra a guia Registros.
Selecione Todos os registros > Registros do Composer > Builds > Imagem do worker e do programador.
Na lista suspensa Gravidade, selecione Informações.
Nos registros exibidos:
Localize a mensagem de erro
installer.sh
. 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 detalham o erro
pip
. 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 de pacotes Python
Em versões recentes, o utilitário pip
mudou o comportamento ao tentar
satisfazer dependências. Se as dependências especificadas não puderem ser atendidas, o pip
vai
passar por todas as versões disponíveis de um pacote.
Quando você instala um pacote, acontece o seguinte:
Se o pacote já estiver pré-instalado no seu ambiente e as dependências do Python especificadas não exigirem mudanças, ele vai permanecer como está.
Exemplo:
aiodebug==2.3.0
está instalado e você especificaaiodebug
ouaiodebug>=2
.Se o pacote ainda não estiver instalado no seu ambiente ou não atender às dependências do Python especificadas, o
pip
tentará usar a versão mais recente que atenda às dependências. Essa é a versão mais recente do pacote se você não especificou uma versão ou a versão mais recente do pacote que atende às restrições especificadas.Exemplo: se você especificar
aiodebug
, a versão mais recente será instalada (2.*.*). Se você especificaraiodebug<2
, a versão 1.*.* será instalada.Se essa versão causar conflitos de dependência com pacotes pré-instalados, o
pip
vai passar por todas as versões disponíveis do pacote para tentar atender à dependência especificada. Quando isso acontecer, as seguintes mensagens vão aparecer no registro de build: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 mudança, o
pip
falhava com um conflito de dependência sem verificar outras versões.
Analisar todas as versões disponíveis pode levar muito tempo e resultar em um downgrade de pacotes ou em um tempo limite 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. Portanto, um tempo limite também pode ocorrer ao fazer upgrade de um ambiente para uma versão mais recente do Cloud Composer.
Possíveis soluções:
Atualize regularmente as dependências personalizadas do Python.
Use o PythonVirtualenvOperator para isolar snippets de código que exigem pacotes conflitantes.
Conflitos com pacotes PyPI pré-instalados
Alguns conflitos de pacotes ocorrem entre pacotes PyPI personalizados que você instala e os pacotes pré-instalados.
É possível conferir a lista completa de pacotes pré-instalados da sua versão do Cloud Composer na página Versões do Cloud Composer.
Para resolver esse problema, faça o seguinte:
Instale uma versão diferente do pacote PyPI personalizado.
Instale uma versão diferente do pacote pré-instalado. Para fazer isso, instale um pacote PyPI personalizado com o nome do pacote pré-instalado e especifique a versão necessária. Não é recomendável fazer downgrade de pacotes pré-instalados.
Veja se as versões do Cloud Composer usam uma versão diferente do pacote pré-instalado. É possível verificar possíveis conflitos de pacote do PyPI antes de fazer upgrade do ambiente para uma versão mais recente do Cloud Composer.
Use o PythonVirtualenvOperator para isolar snippets de código que exigem pacotes conflitantes.
Servidor de metadados indisponível ao instalar pacotes PyPI
Se o ambiente usar um arquivo pip.conf
personalizado,
talvez você tenha um problema quando não for possível instalar novos pacotes PyPI no
ambiente. Nos registros do Cloud Build relacionados ao erro de instalação do pacote, você 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.
Esse problema é causado por um arquivo pip.conf
que não permite o acesso ao
índice de pacote padrão
em https://pypi.org/simple
. Por exemplo, se o arquivo pip.conf
permitir apenas a instalação de pacotes de um repositório personalizado do Artifact Registry devido ao parâmetro index-url
redefinido, não será possível instalar pacotes do índice de pacotes padrão.
Para resolver esse problema, verifique se o índice de pacotes https://pypi.org/simple
foi adicionado ao arquivo 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
.