Como Atualizar Todos os Pacotes Python com pip

Adriano Soares
5 minutos de leitura

Conteúdos do tutorial

Se você trabalha com Python, provavelmente está familiarizado com o pip, o instalador de pacotes para Python. À medida que você continua trabalhando em vários projetos, pode ser necessário atualizar todos os seus pacotes Python. Embora o pip não tenha uma opção integrada para atualizar todos os pacotes de uma vez, existem vários métodos que você pode usar para alcançar isso. Vamos explorar algumas das maneiras mais eficazes de atualizar todos os seus pacotes Python usando o pip.

Usando pip e Comandos Shell

Para aqueles que usam a versão 22.3 ou mais recente do pip, você pode usar uma combinação de pip, Python e comandos shell para atualizar todos os pacotes desatualizados. Aqui está um comando que lista todos os pacotes desatualizados em formato JSON e, em seguida, os atualiza:

pip --disable-pip-version-check list --outdated --format=json | python -c "import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))" | xargs -n1 pip install -U

Para versões do pip anteriores a 22.3, você pode usar o seguinte comando:

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

E para versões ainda mais antigas do pip, este comando deve funcionar:

pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

O comando grep é usado para excluir definições de pacotes editáveis (“-e”), e a flag -n1 para xargs garante que o processo de atualização não pare se um pacote falhar na atualização.

Usando pip-review

Outro método é usar o pip-review, uma ferramenta que permite atualizar todos os pacotes locais de forma interativa ou automática. Primeiro, instale o pip-review:

pip install pip-review

Em seguida, para atualizar pacotes de forma interativa:

pip-review --local --interactive

Ou para atualizar pacotes automaticamente:

pip-review --local --auto

Note que o pip-review é um fork do pip-tools e atualmente está procurando um novo mantenedor, mas ainda funciona efetivamente para atualizar pacotes.

Usando Scripts Python

Para aqueles que preferem uma abordagem mais programática, você pode usar scripts Python para atualizar seus pacotes. Veja como você pode fazer isso para versões do pip antes e depois de 10.0.1:

Para pip < 10.0.1:

import pip
from subprocess import call

packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)

Para pip >= 10.0.1:

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)

Usando um Arquivo requirements.txt

Por último, você pode usar um arquivo requirements.txt para atualizar seus pacotes. Primeiro, gere o arquivo com:

pip freeze > requirements.txt

Em seguida, substitua == por >= para permitir atualizações. Você pode fazer isso manualmente ou com o comando sed:

sed -i 's/==/>=/g' requirements.txt

Finalmente, execute o comando de atualização:

pip install -r requirements.txt --upgrade

Se você encontrar problemas com pacotes específicos, pode comentá-los no arquivo requirements.txt e tentar atualizar novamente.

Resumo

Atualizar todos os seus pacotes Python com pip pode ser feito usando vários métodos, incluindo comandos shell, pip-review, scripts Python ou um arquivo requirements.txt. Cada método tem suas próprias vantagens, e você pode escolher aquele que melhor se adapta ao seu fluxo de trabalho. Mantendo seus pacotes atualizados, você garante que terá os recursos mais recentes e atualizações de segurança, tornando seu ambiente Python mais robusto e confiável.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: