Como atualizo o próprio pip de dentro do meu ambiente virtual?

523

Sou capaz de atualizar pacotes gerenciados por pip, mas como faço para atualizar o próprio pip? De acordo com pip --version, atualmente tenho o pip 1.1 instalado no meu virtualenv e quero atualizar para a versão mais recente.

Qual é o comando para isso? Preciso usar o Distributed ou existe um comando nat pip ou virtualenv? Eu já tentei pip updatee pip update pipsem sucesso.

zakdances
fonte
40
pip install --upgrade pip? É apenas mais um pacote PyPI.
Cairnarvon
1
Esse comando me fornece "/ Users / zak / MyProject / venv / bin / pip install: error: não existe essa opção: --update"
zakdances 5/13
4
É --upgrade, não --update, desculpe. Editei minha postagem imediatamente, mas você deve ter visto exatamente na hora errada.
Cairnarvon
2
@Cairnarvon é o comando diferente para pip3? Estou tentando o pip3, mas ele apenas diz que não consegue encontrá-lo e depois reclama novamente que não está atualizado ... quando nem sequer me permite atualizá-lo / atualizá-lo!
Charlie Parker

Respostas:

929

pipé apenas um pacote PyPI como outro qualquer; você pode usá-lo para atualizar-se da mesma maneira que atualiza qualquer pacote:

pip install --upgrade pip

No Windows, o comando recomendado é:

python -m pip install --upgrade pip
Cairnarvon
fonte
53
No Windows, tive um problema de permissão ao tentar atualizar o pip usando o pip. Em vez disso, usei o easy_install para atualizar:easy_install pip
bsa
8
Quando eu fiz esse pip pareceu atualizar (1.1 -> 1.4), mas quando eu faço "pip --version" ele ainda mostra a versão antiga 1.1. Tentou desativar e ativar o virtualenv novamente, mas ainda está mostrando a versão antiga.
Zitrax
40
No Windows, provavelmente é melhor usar um comando como esse: python -m pip install --upgrade pippara evitar a execução do pip.exe no diretório de scripts.
bialix
@Zitrax você resolveu este problema? Estou diante do mesmo problema.
Mohammad ali baghershemirani
@Mohammadalibaghershemirani desculpe isso há um tempo atrás - não me lembro.
Zitrax 07/04
58

O método mais seguro é executar o pip através de um módulo python :

python -m pip install -U pip

Nas janelas, parece haver um problema com os binários que tentam se substituir, esse método funciona em torno dessa limitação.

Janusz Skonieczny
fonte
9
Agora é isso que o próprio pip recomenda, se detectar uma versão mais nova de si mesmo.
Tephyr # 29/16
1
Acredito que a razão disso é mais seguro, porque em alguns sistemas operacionais (Windows), apenas executar o pip diretamente pode criar um bloqueio de arquivo no executável, o que impediria a atualização. Ao chamar o Python e pedir para carregar o módulo diretamente, você evita acessar o executável.
jpmc26
Você precisa executar o prompt de comando no modo administrador para que isso funcione. Tentei várias outras sugestões e nada funcionou até reiniciar a janela do prompt de comando no modo de administrador, então este comando funcionou perfeitamente.
DaveN59
42

No meu caso, minha versão do pip foi quebrada para que a atualização por si só não funcionasse.

Consertar:

(inside virtualenv):easy_install -U pip
jmoz
fonte
1
Foi o meu caso também. Eu tentei todos os outros métodos, mas somente este me ajuda. Obrigado !
levif 23/08/19
O mesmo aqui, é a única maneira que funciona para mim no Debian. O uso de python ou pip para atualizar o pip de dentro do virtualenv falharia porque se recusava a desinstalar o pip existente fora do venv.
user3748764
A execução disso me mostrou muitas coisas, incluindo as Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!que não foram exibidas durante a execução --upgrade. E é provavelmente a razão pela qual a instalação de qualquer pacote de pip está falhando e por que a atualização do pip através do pip também está falhando, o SSL parece quebrado.
Vadorequest 4/18
9

Eu tentei todas essas soluções mencionadas acima no Debian Jessie. Eles não funcionam, porque basta a compilação da versão mais recente pelo gerenciador de pacotes debian, que é 1.5.6, o que equivale à versão 6.0.x. Alguns pacotes que usam o pip como pré-requisitos não funcionarão como resultado, como o spaCy (que precisa da opção --no-cache-dir para funcionar corretamente).

Portanto, a melhor maneira de resolver esses problemas é executando o arquivo get-pip.py baixado usando o wget, no site ou usando o curl da seguinte maneira:

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

Isso instalará a versão atual que, no momento da redação desta solução, é 9.0.1, muito além do que o Debian fornece.

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)
Eamonn Kenny
fonte
2
útil para quando pip install --upgrade pipfalhou #
Aneuway
Se eu pudesse aprovar esta resposta algumas vezes, eu o faria. Isso acabou de resolver um problema em que o pip 9.x falhou com um erro SSL ao atualizar para o pip 10.x. Veja stackoverflow.com/questions/25981703/…
Keith John Hutchison
Bem, se você votou mesmo uma vez, ficarei feliz. Minhas respostas são geralmente encontradas a partir de uma ou duas horas de caça e anos de experiência. Não pode dizer o mesmo para minhas perguntas? As pessoas podem ser realmente más! :)
Eamonn Kenny
4

A atualização do pip usando ' pip install --upgrade pip ' nem sempre funciona devido ao temido problema de certificado: certificação: Ocorreu um problema ao confirmar o certificado ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] versão do protocolo de alerta tlsv1

Eu gosto de usar o comando de uma linha para envs virtuais:

curl https://bootstrap.pypa.io/get-pip.py | python -

Ou, se você quiser instalá-lo em toda a caixa, precisará de

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

você pode dar um sinalizador curl a -s se desejar silenciar a saída ao executar em um script de automação.

rublo
fonte
1

No meu caso, isso funcionou a partir da linha de comando do terminal no Debian Stable

python3 -m pip install --upgrade pip
Prabhakaran KC
fonte
1

Para que isso funcionasse para mim, tive que detalhar o diretório Python usando o prompt de comando do Python (no WIN10 do VS CODE). No meu caso, ele estava no meu diretório "AppData \ Local \ Programs \ Python \ python35-32". De lá agora eu executei o comando ...

python -m pip install --upgrade pip

Isso funcionou e estou pronto para ir.

Sean
fonte
1

Abra o prompt de comando com permissões de administrador e repita o comando:

python -m pip install --upgrade pip
MRamzan
fonte
4
Não é o mesmo que algumas das respostas existentes?
Hkchengrex
No entanto, eu estava tendo o problema e ele foi resolvido quando executei o CMD com privilégios de administrador.
MRamzan 12/02/19
1

A versão 10 do pip tem um problema. Ele se manifestará como o erro:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

A solução é estar no local que você deseja atualizar e depois executar:

sudo myvenv/bin/pip install --upgrade pip

ao invés de apenas

sudo pip install --upgrade pip
Calaf
fonte
1

Caso você esteja usando venv, qualquer atualização na instalação do pip resultará na atualização do pip do sistema em vez do pip venv. Você também precisa atualizar os pacotes de inicialização de pip.

  python3 -m pip install --upgrade pip setuptools wheel
dre-hh
fonte
houve algum problema no python mailist ou pepa. Infelizmente todas as partes afastou responsabilidade como not my motorollerproblema
DRE-hh
0

Eu havia instalado o Python em C: \ Python \ Python36, então fui ao prompt de comando do Windows e digitei "cd C: \ Python \ Python36 para chegar ao diretório certo. Em seguida, digitei" python -m install --upgrade pip " Boa!

Walt
fonte
0

No meu laptop com Windows 7, a maneira correta de instalar a versão mais recente do pip é:

python.exe -m pip install --upgrade pip
MiloshB
fonte
0

Programa Python de linha única
A melhor maneira que encontrei é escrever um programa de linha única que baixa e executa o script get-pip oficial. Veja abaixo o código.

Os documentos oficiais recomendam o uso de curl para baixar o script get-pip, mas como eu trabalho no Windows e não tenho o curl instalado, prefiro usar o próprio python para baixar e executar o script.

Aqui está o programa de linha única que pode ser executado via linha de comando usando o Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Essa linha obtém o script "get-pip.py" oficial conforme as notas de instalação e executa o script com o comando "exec".

Para Python2, você substitui "urllib.request" por "urllib2":

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Precauções
Vale a pena notar que executar qualquer script python às cegas é inerentemente perigoso. Por esse motivo, as instruções oficiais recomendam o download do script e a inspeção antes da execução.

Dito isto, muitas pessoas realmente não inspecionam o código e apenas o executam. Este programa de uma linha facilita isso.

FistOfFury
fonte
0

Eu tive um problema semelhante em um pi framboesa.

O problema era que o http requer SSL e, portanto, eu precisava forçá-lo a usar https para contornar esse requisito.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

ou

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/
user391339
fonte
0

Eu estava em uma situação semelhante e queria atualizar o pacote urllib3. O que funcionou para mim foi:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3
Avik Aggarwal
fonte
-2

Muito simples. Basta baixar o pip em https://bootstrap.pypa.io/get-pip.py . Salve o arquivo em algum forlder ou dekstop. Eu salvei o arquivo na minha unidade D.Em seguida, no prompt de comando, navegue até a pasta em que você baixou o pip. Então digite lá

python -get-pip.py

Captura de tela da instalação do Pip

Prasad K
fonte