Como atualizo um pacote Python?


234

Estou executando o Ubuntu 9:10 e um pacote chamado M2Crypto está instalado (a versão é 0.19.1). Preciso fazer o download, compilar e instalar a versão mais recente do pacote M2Crypto (0.20.2).

O pacote 0.19.1 possui arquivos em vários locais, incluindo (/ usr / share / pyshared e /usr/lib/pymodules.python2.6).

Como posso desinstalar completamente a versão 0.19.1 do meu sistema antes de instalar o 0.20.2?

Respostas:


54

Você pode procurar em um gerenciador de pacotes Python como o pip . Se você não quiser usar um gerenciador de pacotes Python, poderá fazer o download do M2Crypto e construir / compilar / instalar sobre a instalação antiga.


1
Obrigado. O que você disse funcionou. Criei e instalei o 0.20.2 sem precisar desinstalar o 0.19.1.
thompson

461

A melhor maneira que eu encontrei é executar este comando no terminal

sudo pip install [package_name] --upgrade

sudo solicitará que você digite sua senha root para confirmar a ação.


Nota: Alguns usuários podem ter o pip3 instalado. Nesse caso, use

sudo pip3 install [package_name] --upgrade

4
E se você estiver usando um proxy sem autenticação: sudo pip install [pacote] --upgrade --proxy = address: port
lmsasu

32
Eu vim aqui para esta resposta. Eu tentei pip updatee fiquei pip upgradedesesperado até ver --upgradeaqui. Por que eles não adicionam um pip upgradecomando?
Lars Blumberg #

9
Este é realmente um recurso bem escondido.
Otocan

1
Para usuários do Windows: sudonão é necessário.
precisa saber é o seguinte

2
Esta deve ser a resposta # 1
Cord Kaldemeyer

48

Para atualizar automaticamente todos os pacotes desatualizados (que foram instalados usando o pip), basta executar o script abaixo,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Aqui, pip list --outdatedlistamos todos os pacotes desatualizados e, em seguida, o encaminhamos para o awk, para que ele imprima apenas os nomes. Então, o $(...)tornará uma variável e, em seguida, tudo será feito automaticamente. Verifique se você tem as permissões. (Basta colocar sudoantes do pip, se você estiver confuso). Eu escreveria um script chamado: pip-upgrade O código está abaixo,

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Em seguida, use as seguintes linhas de script para prepará-lo:

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

Então, basta bater pip-upgradee pronto!


Eu recebi um erro de sintaxe, apontando para o último colchete em:awk: cmd. line:1: { print $1 })
TT-- 3/17/17

7
@TT As versões mais recentes do piprequerem a --format=legacyopção, ou seja pip list --outdated --format=legacy,. Também para todos os demais: atualizar cegamente todos os módulos via pip pode ser bastante perigoso em muitas distros do Linux. Muitos deles fornecem módulos python específicos por meio de pacotes de distribuição e algumas dessas distribuições (RHEL em particular) podem ser difíceis se você atualizar uma merda ... sem mencionar o fato de que, se você atualizar via pip, os pacotes de distribuição podem reverter suas alterações em uma atualização futura.
precisa saber é

obrigado @rsaw. Ele está certo você deve executar seus comandos pip com a opção --user
Fahim Ferdous

1
Gosto desta resposta, embora compreenda o perigo de atualizar tudo automaticamente. De qualquer forma, uma vez que o legado está obsoleto no pip 19.0 pip install $ (lista pip - desatualizada --format = colunas | grep -v "Pacote" | grep -v - ---- | awk '{print $ 1}') - -upgrade
mike v

2
Para trabalhar em um Ubuntu 18.04 venv, adapte-se da seguinte maneira:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch

34
  1. Via prompt de comando do Windows, execute: pip list --outdated Você receberá a lista de pacotes desatualizados.
  2. Executar: pip install [package] --upgrade ele atualiza [package]e desinstala a versão anterior.

Para atualizar o pip:

py -m pip install --upgrade pip

Novamente, isso desinstalará a versão anterior do pip e instalará a versão mais recente do pip.


29
  • Método 1: atualizar manualmente um por um

pip install package_name -U
  • Método 2: atualizar tudo de uma vez (reversão de alta chance, se algum pacote falhar na atualização

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Método 3: atualizar um por um usando loop

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done

11

Eu acho que o melhor one-liner é:

pip install --upgrade <package>==<version>

9

Use pipupgrade !

$ pip install pipupgrade
$ pipupgrade --latest --interactive

O pipupgrade ajuda a atualizar seu sistema, local ou pacotes a partir de um requirements.txtarquivo! Ele também atualiza seletivamente pacotes que não quebram as alterações. Compatível com Python2.7 +, Python3.4 + e pip9 +, pip10 +, pip18 +.

insira a descrição da imagem aqui

NOTA: Sou o autor da ferramenta.


1
Sempre que uso essa ferramenta, recebo a resposta "[0; 93mChecking ... [0m" e ela continua sem fazer nada. Estou usando incorretamente?
Violatic

Eu uso um Mac com MacPorts. Com o Python 3.7, o pipupgrade funcionou apenas para 5 de 50 pacotes; no restante, tive que usar isso: for i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; instalar o pip3.7 - upgrade $ i; feito #
Michael Dreher

4

Como o pacote foi instalado originalmente? Se fosse via apt, você poderia apenas fazerapt-get remove python-m2crypto

Se você o instalou através do easy_install, tenho certeza de que a única maneira é apenas lixeira nos arquivos sob lib, shared, etc.

Minha recomendação no futuro? Use algo como pip para instalar seus pacotes. Além disso, você pode procurar algo chamado virtualenv para que seus pacotes sejam armazenados por ambiente, e não apenas na raiz.

Com o pip, é bem fácil:

pip install m2crypto

Mas você também pode instalar a partir dos repositórios git, svn, etc com o endereço certo. Tudo isso é explicado na documentação do pip


A maneira como ele descreve onde os arquivos estão instalados indica que o pacote foi instalado usando o gerenciador de pacotes apt - porque (no Debian AFAIK) o apt instalaria pacotes python nos 2 locais listados - / share / pyshared / .. é para código compartilhado entre versões e / usr / lib / .. para partes específicas da versão. o easy-install / pip, por outro lado, usaria / usr / local / lib / .. - como você disse - apenas o apt-get remove o faria.
Basel Shishani


3

No notebook Juptyer, uma maneira muito simples é

!pip install <package_name> --upgrade

Então, você só precisa substituir pelo nome do pacote real.


2

Obtenha todos os pacotes desatualizados e crie um arquivo em lotes com os seguintes comandos pip install xxx --upgrade para cada pacote desatualizado

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.