Instale dependências do Python (original) (raw)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página descreve como instalar pacotes Python para o seu ambiente do Cloud Composer.

Acerca dos pacotes no Cloud Composer

Esta secção explica como funcionam os pacotes PyPI no Cloud Composer.

Pacotes PyPI pré-instalados e personalizados em imagens do Cloud Composer

As imagens do Cloud Composer contêm pacotes PyPI pré-instalados e personalizados.

Opções para gerir pacotes PyPI para ambientes do Cloud Composer

Opção Use se
Instale a partir do PyPI A forma predefinida de instalar pacotes no seu ambiente
Instale a partir de um repositório com um endereço IP público O pacote está alojado num repositório de pacotes que não seja o PyPI. Este repositório tem um endereço IP público
Instale a partir de um repositório do Artifact Registry O pacote está alojado num repositório do Artifact Registry
Instale a partir de um repositório na rede do seu projeto O seu ambiente não tem acesso à Internet pública. O pacote está alojado num repositório de pacotes na rede do seu projeto.
Instale como uma biblioteca Python local Não é possível encontrar o pacote no PyPI e a biblioteca não tem dependências externas, como dist-packages.
Instale um plugin O pacote oferece funcionalidades específicas do plug-in, como a modificação da interface Web do Airflow.
PythonVirtualenvOperator Não quer que o pacote seja instalado para todos os trabalhadores do Airflow ou a dependência entra em conflito com pacotes pré-instalados. O pacote pode ser encontrado no PyPI e não tem dependências externas.
KubernetesPodOperator e operadores do GKE Precisa de dependências externas que não podem ser instaladas a partir do pip, como o dist-packages, ou estão num servidor pip interno. Esta opção requer mais configuração e manutenção. Considere esta opção apenas se outras opções não funcionarem.

Antes de começar

Veja a lista de pacotes PyPI

Pode obter a lista de pacotes para o seu ambiente em vários formatos.

Veja pacotes pré-instalados

Para ver a lista de pacotes pré-instalados para o seu ambiente, consulte a lista de pacotes para aimagem do Cloud Composer do seu ambiente.

Ver todos os pacotes

Para ver todos os pacotes (pré-instalados e personalizados) no seu ambiente:

gcloud

O seguinte comando da CLI gcloud devolve o resultado do comando python -m pip list para um trabalhador do Airflow no seu ambiente. Pode usar o argumento --tree para obter o resultado do comando python -m pipdeptree --warn.

gcloud beta composer environments list-packages \
    ENVIRONMENT_NAME \
    --location LOCATION

Substituir:

Veja pacotes PyPI personalizados

Consola

  1. Na Google Cloud consola, aceda à página Ambientes.
    Aceder a Ambientes
  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.
  3. Aceda ao separador Pacotes PyPI.

gcloud

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.softwareConfig.pypiPackages)"

Substituir:

Instale pacotes personalizados num ambiente do Cloud Composer

Esta secção descreve diferentes métodos de instalação de pacotes personalizados no seu ambiente.

Instale pacotes a partir do PyPI

Pode instalar um pacote a partir do Python Package Index se não tiver dependências externas nem conflitos com pacotes pré-instalados.

Para adicionar, atualizar ou eliminar as dependências do Python para o seu ambiente:

Consola

  1. Na Google Cloud consola, aceda à página Ambientes.
    Aceder a Ambientes
  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.
  3. Aceda ao separador Pacotes PyPI.
  4. Clique em Editar
  5. Clique em Adicionar pacote.
  6. Na secção Pacotes PyPI, especifique os nomes dos pacotes com especificadores de versão e extras opcionais.
    Por exemplo:
    • scikit-learn
    • scipy, >=0.13.3
    • nltk, [machine_learning]
  7. Clique em Guardar.

gcloud

A CLI gcloud tem vários argumentos para trabalhar com pacotes PyPI personalizados:

Instalar requisitos a partir de um ficheiro

O ficheiro requirements.txt tem de ter cada especificador de requisito numa linha separada.

Por exemplo:

scipy>=0.13.3
scikit-learn
nltk[machine_learning]

Atualize o seu ambiente e especifique o ficheiro requirements.txt no argumento --update-pypi-packages-from-file.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --update-pypi-packages-from-file requirements.txt

Substituir:

Instalar um pacote

Atualize o seu ambiente e especifique o pacote, a versão e os extras no argumento --update-pypi-package.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --update-pypi-package PACKAGE_NAMEEXTRAS_AND_VERSION

Substituir:

Exemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --update-pypi-package "scipy>=0.13.3"

Remover pacotes

Atualize o seu ambiente e especifique os pacotes que quer eliminar no argumento --remove-pypi-packages:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --remove-pypi-packages PACKAGE_NAMES

Substituir:

Exemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --remove-pypi-packages scipy,scikit-learn

API

Construa um pedido de API environments.patch.

Nesta solicitação:

  1. No parâmetro updateMask, especifique a máscara:
    • Use a máscara config.softwareConfig.pypiPackages para substituir todos os pacotes existentes pelos pacotes especificados. Os pacotes que não especificar são eliminados.
    • Use config.softwareConfig.envVariables.PACKAGE_NAME para adicionar ou atualizar um pacote específico. Para adicionar ou atualizar vários pacotes, especifique várias máscaras com vírgulas.
  2. No corpo do pedido, especifique pacotes e valores para versões e extras:
{  
  "config": {  
    "softwareConfig": {  
      "pypiPackages": {  
        "PACKAGE_NAME": "EXTRAS_AND_VERSION"  
      }  
    }  
  }  
}  

Substituir:

Exemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.pypiPackages.EXAMPLE_PACKAGE,
// config.softwareConfig.pypiPackages.ANOTHER_PACKAGE
{
  "config": {
    "softwareConfig": {
      "pypiPackages": {
        "EXAMPLE_PACKAGE": "",
        "ANOTHER_PACKAGE": ">=1.10.3"
      }
    }
  }
}

Terraform

O bloco pypi_packages no bloco software_config especifica os pacotes.

resource "google_composer_environment" "example" {
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      pypi_packages = {
          PACKAGE_NAME = "EXTRAS_AND_VERSION"
      }

    }
  }
}

Substituir:

Exemplo:

resource "google_composer_environment" "example" {
  name = "example-environment"
  region = "us-central1"

  config {

    software_config {
      pypi_packages = {
          scipy = ">=1.10.3"
          scikit-learn = ""
          nltk = "[machine_learning]"
      }
    }
  }
}

Instale pacotes a partir de um repositório público

Pode instalar pacotes alojados noutros repositórios que tenham um endereço IP público.

Os pacotes têm de estar corretamente configurados para que a ferramenta pip predefinida os possa instalar.

Para instalar a partir de um repositório de pacotes com um endereço público:

  1. Crie um ficheiro pip.conf e inclua as seguintes informações no ficheiro, se aplicável:
    • URL do repositório (no parâmetro index-url)
    • Credenciais de acesso ao repositório
    • Opções de instalação pip não predefinidas
      Exemplo:
[global]  
index-url=https://example.com/  
  1. (Opcional) Em alguns casos, pode querer obter pacotes de vários repositórios, como quando o repositório público contém alguns pacotes específicos que quer instalar e quer instalar todos os outros pacotes do PyPI:
    1. Configure um repositório virtual do Artifact Registry.
    2. Adicione a configuração para vários repositórios (incluindo o PyPI, se necessário) e defina a ordem pela qual o pip pesquisa os repositórios.
    3. Especifique o URL do repositório virtual no parâmetro index-url.
  2. Determine o URI do contentor do seu ambiente.
  3. Carregue o ficheiro pip.conf para a pasta /config/pip/ no contentor do seu ambiente.
  4. Instale pacotes através de um dos métodos disponíveis.

Instale pacotes a partir de um repositório do Artifact Registry

Pode armazenar pacotes num repositório do Artifact Registryno seu projeto e configurar o seu ambiente para instalar a partir dele.

Configure funções e autorizações:

  1. Certifique-se de que a conta de serviço do Cloud Build tem autorizações para ler a partir do seu repositório do Artifact Registry.
  2. Se o seu ambiente tiver acesso restrito a outros serviços no seu projeto, por exemplo, se usar os VPC Service Controls:
    1. Atribua autorizações para aceder ao seu repositório do Artifact Registry à conta de serviço do ambiente em vez da conta de serviço do Cloud Build.
    2. Certifique-se de que a conetividade ao repositório do Artifact Registry está configurada no seu projeto.

Para instalar pacotes PyPI personalizados a partir de um repositório do Artifact Registry:

  1. Crie um ficheiro pip.conf e inclua as seguintes informações no ficheiro, se aplicável:
    • URL do repositório do Artifact Registry (no parâmetro index-url)
    • Credenciais de acesso ao repositório
    • Opções de instalação pip não predefinidas
      Para um repositório do Artifact Registry, anexe /simple/ ao URL do repositório:
[global]  
index-url = https://us-central1-python.pkg.dev/example-project/example-repository/simple/  
  1. (Opcional) Em alguns casos, pode querer obter pacotes de vários repositórios, como quando o seu repositório do Artifact Registry contém alguns pacotes específicos que quer instalar e quer instalar todos os outros pacotes do PyPI:
    1. Configure um repositório virtual do Artifact Registry.
    2. Adicione a configuração para vários repositórios (incluindo o PyPI, se necessário) e defina a ordem pela qual o pip pesquisa os repositórios.
    3. Especifique o URL do repositório virtual no parâmetro index-url.
  2. Carregue este ficheiro pip.conf para a pasta /config/pip/no contentor do seu ambiente. Por exemplo:gs://us-central1-example-bucket/config/pip/pip.conf.
  3. Instale pacotes através de um dos métodos disponíveis.

Instale pacotes a partir de um repositório privado

Pode alojar um repositório privado na rede do seu projeto e configurar o seu ambiente para instalar pacotes Python a partir dele.

Configure funções e autorizações:

  1. Se instalar pacotes PyPI personalizados a partir de um repositório na rede do seu projeto e este repositório não tiver um endereço IP público:
    1. Atribua autorizações para aceder a este repositório à conta de serviço do ambiente.
    2. Certifique-se de que a conetividade a este repositório está configurada no seu projeto.

Para instalar pacotes a partir de um repositório privado alojado na rede do seu projeto:

  1. Crie um ficheiro pip.conf e inclua as seguintes informações no ficheiro, se aplicável:
    • Endereço IP do repositório na rede do seu projeto
    • Credenciais de acesso ao repositório
    • Opções de instalação pip não predefinidas
      Exemplo:
[global]  
index-url=https://192.0.2.10/  
  1. (Opcional) Em alguns casos, pode querer obter pacotes de vários repositórios, como quando o repositório privado contém alguns pacotes específicos que quer instalar e quer instalar todos os outros pacotes a partir do PyPI:
    1. Configure um repositório virtual do Artifact Registry.
    2. Adicione a configuração para vários repositórios (incluindo o PyPI, se necessário) e defina a ordem pela qual o pip pesquisa os repositórios.
    3. Especifique o URL do repositório virtual no parâmetro index-url.
  2. (Opcional) Pode usar um certificado personalizado quando instala pacotes do seu repositório privado. Para isso:
    1. Carregue o ficheiro de certificado para a pasta /config/pip/ no contentor do seu ambiente.
    2. Em pip.conf, especifique o nome do ficheiro de certificado no parâmetro cert. Não altere a pasta /etc/pip/.
      Exemplo:
    [global]  
    cert =/etc/pip/example-certificate.pem  
  3. Carregue o ficheiro pip.conf para a pasta /config/pip/ no contentor do seu ambiente. Por exemplo:gs://us-central1-example-bucket/config/pip/pip.conf.
  4. Instale pacotes através de um dos métodos disponíveis.

Instale uma biblioteca Python local

Para instalar uma biblioteca Python interna ou local:

  1. Coloque as dependências numa subdiretoria na pasta dags/ no contentor do seu ambiente. Para importar um módulo de um subdiretório, cada subdiretório no caminho do módulo tem de conter um ficheiro de marcador de pacote __init__.py.
    No exemplo seguinte, a dependência écoin_module.py:
dags/  
  use_local_deps.py  # A DAG file.  
  dependencies/  
    __init__.py  
    coin_module.py  
  1. Importe a dependência do ficheiro de definição do DAG.
    Por exemplo:

Use pacotes que dependam de bibliotecas de objetos partilhados

Determinados pacotes do PyPI dependem de bibliotecas ao nível do sistema. Embora o Cloud Composer não suporte bibliotecas do sistema, pode usar as seguintes opções:

Instale pacotes em ambientes de IP privado

Consoante a forma como configura o seu projeto, o seu ambiente pode não ter acesso à Internet pública.

Por predefinição, o seu ambiente do Cloud Composer 3 pode aceder à Internet quando instala pacotes PyPI. Isto funciona em todos os tipos de rede do ambiente (IP privado e público). Por exemplo, pode instalar pacotes a partir doPython Package Index num ambiente de IP privado.

Para mais informações, consulte o artigoConfigure o acesso à Internet ao instalar pacotes PyPI.

Ambiente de IP privado com acesso à Internet pública

Se o seu ambiente de IP privado puder aceder à Internet pública, pode instalar pacotes através de opções para ambientes de IP público:

Ambiente de IP privado sem acesso à Internet

Se o seu ambiente de IP privado não tiver acesso à Internet pública, pode instalar pacotes de uma das seguintes formas:

Instale num ambiente de IP privado ao abrigo das restrições de localização de recursos

Manter o seu projeto em conformidade com os requisitos de restrição de localização de recursos impede a utilização de algumas ferramentas. Em particular, não é possível usar o Cloud Build para a instalação de pacotes, o que impede o acesso direto a repositórios na Internet pública.

Para instalar dependências do Python num ambiente deste tipo, siga as orientações para ambientes de IP privadosem acesso à Internet.

Instale uma dependência do Python num ambiente de IP privado num perímetro do VPC Service Controls

A proteção do seu projeto com umperímetro dos VPC Service Controlsresulta em restrições de segurança adicionais. Em particular, não é possível usar o Cloud Build para a instalação de pacotes, o que impede o acesso direto a repositórios na Internet pública.

Para instalar dependências do Python para um ambiente de IP privado dentro de um perímetro, siga as orientações para ambientes de IP privadosem acesso à Internet.

O que se segue?