Gerenciar pacotes do Python

Esta página descreve como adicionar, visualizar e excluir pacotes e versões de pacotes do Python.

Antes de começar

  1. Instale e inicialize a Google Cloud CLI.

    A Google Cloud CLI versão 354.0.0 ou mais recente é necessária para executar comandos para repositórios Python. Para verificar a versão, use o comando:

    gcloud version
    
  2. Se o repositório de destino não existir, crie um novo repositório de pacotes Python.

  3. Verifique se o Python 3 está instalado. Para instruções de instalação, consulte o Google Cloud tutorial para configurar o Python.

  4. (Opcional) Configure padrões para comandos gcloud.

  5. Se você estiver usando a autenticação de chaveiro com credenciais do gcloud, faça login na Google Cloud CLI com sua conta de usuário ou de serviço.

Funções exigidas

Para conseguir as permissões necessárias para gerenciar pacotes, peça ao administrador para conceder a você os seguintes papéis do IAM no repositório:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Como adicionar pacotes

Modos de repositório: padrão

Ao criar um projeto Python, os arquivos de distribuição são salvos em um subdiretório dist no projeto. Em seguida, use o Twine para fazer upload de pacotes para um repositório padrão.

Recomendamos as seguintes práticas recomendadas para seus pacotes:

  • Use nomes exclusivos para seus pacotes particulares para que eles não correspondam aos nomes de pacotes no pypi.org, principalmente se a configuração do pip incluir vários índices de pacotes.
  • Use a especificação do identificador de versão no PEP 440 para os números de versão do pacote. Por padrão, o pip instala apenas versões estáveis. Ele usa a especificação do identificador de versão para distinguir versões estáveis de versões de pré-lançamento e analisar os requisitos da versão a ser instalada.

Para adicionar um pacote:

  1. Instale o Twine.

    pip install twine
    
  2. Mude para o diretório do projeto Python.

  3. Faça upload dos arquivos de distribuição para o repositório do subdiretório dist do projeto. Execute este comando:

    twine upload dist/*
    

    É possível especificar um repositório específico com a flag --repository-url.

    twine upload --repository-url https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ dist/*
    

Como visualizar pacotes e versões

Modos de repositório: padrão, remoto

Para conferir pacotes e versões de pacotes usando o console do Google Cloud ou gcloud:

Console

  1. Abra a página Repositórios no console Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Clique em um pacote para visualizar as versões dele.

gcloud

Para listar pacotes em um repositório, execute o seguinte comando:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Substitua:

  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Se você tiver configurado um local padrão, poderá omitir essa flag para usar o padrão.

Para ver as versões de um pacote, execute o seguinte comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Substitua:

  • PACKAGE é o ID do pacote ou o identificador totalmente qualificado do pacote.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use essa flag para conferir repositórios em um local específico. Se você tiver configurado um local padrão, poderá omitir essa flag para usar o padrão.

Para repositórios remotos, a lista retornada precisa incluir todas as dependências diretas e transitivas.

Como listar arquivos

Modos de repositório: padrão, remoto

É possível listar arquivos em um repositório, arquivos em todas as versões de um pacote específico ou arquivos em uma versão específica de um pacote.

Para todos os comandos a seguir, é possível definir um número máximo de arquivos a serem retornados adicionando a flag --limit ao comando.

Para listar todos os arquivos no projeto, repositório e local padrão quando os valores padrão estiverem configurados:

gcloud artifacts files list

Para listar arquivos em um projeto, repositório e local especificados, execute o comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Para listar arquivos de todas as versões de um pacote específico:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Para listar arquivos de uma versão específica do pacote:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Substitua os seguintes valores:

  • LOCATION: o local regional ou multirregional do repositório.
  • PROJECT: o ID do projeto do Google Cloud . Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
  • REPOSITORY: o nome do repositório em que a imagem está armazenada.
  • PACKAGE: o nome do pacote.
  • VERSION: a versão do pacote.

Exemplos

Considere as seguintes informações do pacote:

  • Projeto: my-project
  • Repositório: my-repo
  • Local do repositório: us-west1
  • Pacote: my-app

O comando a seguir lista todos os arquivos no repositório my-repo no local us-west1 no projeto padrão:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
O comando a seguir lista os arquivos na versão 1.0 do pacote.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Como instalar pacotes

Modos de repositório: padrão, remoto, virtual

Use o comando pip para instalar pacotes.

Para instalar a versão estável mais recente de um pacote, execute o comando:

pip install PACKAGE

Para repositórios padrão, faça o download de um pacote diretamente do repositório.

Para um repositório remoto, você faz o download de uma cópia em cache do pacote e das dependências. Se uma cópia em cache não existir, o repositório remoto vai fazer o download do pacote da origem upstream e armazená-lo em cache antes de exibi-lo para você. É possível verificar se o repositório remoto recuperou os pacotes da origem upstream conferindo a lista de pacotes no repositório.

Para um repositório virtual, o Artifact Registry pesquisa o pacote solicitado nos repositórios upstream.

  • Os repositórios remotos upstream vão fazer o download e armazenar em cache o pacote solicitado se não houver uma cópia em cache. Os repositórios virtuais só servem os pacotes solicitados, não os armazenam.
  • Se você solicitar uma versão disponível em mais de um repositório upstream, o Artifact Registry vai escolher um repositório upstream para usar com base nas configurações de prioridade configuradas para o repositório virtual.

Por exemplo, considere um repositório virtual com as seguintes configurações de prioridade para repositórios upstream:

  • main-repo: prioridade definida como 100
  • secondary-repo1: prioridade definida como 80.
  • secondary-repo2: prioridade definida como 80.
  • test-repo: prioridade definida como 20.

main-repo tem o valor de prioridade mais alto, então o repositório virtual sempre o pesquisa primeiro.

secondary-repo1 e secondary-repo2 têm prioridade definida como 80. Se um pacote solicitado não estiver disponível em main-repo, o Artifact Registry procurará esses repositórios em seguida. Como ambos têm o mesmo valor de prioridade, o Artifact Registry pode escolher servir um pacote de qualquer repositório se a versão estiver disponível em ambos.

test-repo tem o menor valor de prioridade e vai servir um artefato armazenado se nenhum dos outros repositórios upstream tiver.

Mais informações

Por padrão, o pip instala versões estáveis de um pacote e ignora as versões de pré-lançamento. O PEP 440 define a especificação do identificador de versão do Python que permite que os usuários do pip analisem números de versão, incluindo versões de pré-lançamento.

Para incluir versões de pré-lançamento quando o pip procurar um pacote para instalar, adicione a flag --pre ao comando.

pip install --pre PACKAGE

Para especificar uma versão ou um intervalo de versões obrigatório, inclua um especificador de requisito. É possível incluir o requisito de versão diretamente no comando ou usar um arquivo de requisitos.

Por exemplo, este comando especifica que a versão mínima de my-package é a versão de desenvolvimento 1.0.dev0.

pip install --pre my-package>=1.0.dev0

As versões estáveis são consideradas mais recentes do que as versões preliminares. Portanto, se a versão 1.0 estiver no repositório, o pip vai escolher a versão 1.0 em vez de uma versão preliminar.

Se você não especificar um repositório, a configuração do pip em pip.conf determinará como o pip vai pesquisar o pacote.

  • Se você configurou o repositório do Artifact Registry com a configuração index-url e nenhum outro índice de pacotes foi configurado, o pip só pesquisa o pacote no repositório do Artifact Registry.
  • Se você estiver usando um repositório virtual, o Artifact Registry vai usar as prioridades configuradas na política upstream para escolher um pacote quando vários repositórios upstream tiverem a versão do pacote solicitada. Se dois repositórios com o pacote tiverem a mesma prioridade, o Artifact Registry vai servir o pacote de qualquer um deles.
  • Se você configurou o pip com a configuração extra-index-url ou configurou vários índices de pacotes, o pip pesquisa pypi.org e todos os outros índices de pacotes configurados e escolhe a versão mais recente do pacote.

É possível substituir as configurações index-url ou extra-index-url no arquivo requirements. Você também pode usar flags para essas configurações no comando pip. Por exemplo, este comando substitui index-url por um repositório do Artifact Registry.

pip install --index-url https://us-east1-python.pkg.dev/my-project/python-repo/simple/ my-package

Para mais informações sobre a instalação de pacotes, consulte a documentação de empacotamento do Python.

Como excluir pacotes e versões

Modos de repositório: padrão, remoto

Você pode excluir um pacote e todas as versões dele ou excluir uma versão específica.

  • Não é possível desfazer a exclusão de um pacote.
  • Para repositórios remotos, apenas a cópia em cache do pacote é excluída. A origem upstream não é afetada. Se você excluir um pacote armazenado em cache, o Artifact Registry vai fazer o download e armazená-lo novamente na próxima vez que o repositório receber uma solicitação para a mesma versão do pacote.

Antes de excluir uma versão de pacote ou um pacote, verifique se você comunicou ou resolveu qualquer dependência importante nele.

Para excluir um pacote:

Console

  1. Abra a página Repositórios no console Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Selecione o pacote que você quer excluir.

  4. Clique em EXCLUIR.

  5. Na caixa de diálogo de confirmação, clique em Excluir.

gcloud

Execute este comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Substitua:

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use essa flag para conferir repositórios em um local específico. Se você configurou um local padrão, poderá omitir essa flag para usar o padrão.

A flag --async faz com que o comando seja retornado imediatamente, sem aguardar a conclusão da operação em andamento.

Para excluir versões de um pacote:

Console

  1. Abra a página Repositórios no console Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Clique em um pacote para visualizar as versões dele.

  4. Selecione as versões que você quer excluir.

  5. Clique em EXCLUIR.

  6. Na caixa de diálogo de confirmação, clique em Excluir.

gcloud

Execute este comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Substitua:

  • VERSION é o nome da versão a ser excluída.
  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use essa flag para conferir repositórios em um local específico. Se você configurou um local padrão, poderá omitir essa flag para usar o padrão.

A flag --async faz com que o comando seja retornado imediatamente, sem aguardar a conclusão da operação em andamento.

A seguir