www - Não é possível instalar pacotes do Python




www get pip py (10)

Eu estou tentando instalar uma biblioteca Python usando pip , recebendo um erro SSL:

~/projects/base  pre-master±  pip install xdict

Collecting xdict
  Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
  Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict

versão pip: pip 9.0.1

Como corrijo esse erro?


A resposta do @ Anupam no OS X resultou no seguinte erro para mim, independentemente das permissões com as quais executei:

Não foi possível instalar pacotes devido a um erro EnvironmentError: [Errno 13] Permissão negada: ...

O que eventualmente funcionou foi baixar um pacote pip mais recente (9.0.3) do PyPI diretamente do meu navegador - https://pypi.org/simple/pip/ , extrair o conteúdo e, em seguida, pip instalar o pacote localmente:

pip install ./pip-9.0.3/

Isso corrigiu meus erros [SSL: TLSV1_ALERT_PROTOCOL_VERSION] .


A solução a seguir funcionou para mim:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

Ele também atualizou o pip para a versão 1.10.1


Atualize o pip da seguinte forma:

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

Nota: Você pode precisar usar o sudo python acima, se não estiver em um ambiente virtual.

(Observe que atualizar o pip usando pip ou seja, pip install --upgrade pip também não irá atualizá-lo corretamente. É apenas um problema de galinha e ovo. O pip não funcionará a menos que esteja usando TLS> = 1.2.)

Como mencionado nesta resposta detalhada , isso se deve à recente depreciação de TLS para pip. Os sites Python.org pararam o suporte para as versões 1.0 e 1.1 do TLS.

Na página de status do Python:

Concluído - As quedas de energia estão concluídas e o TLSv1.0 e o TLSv1.1 foram desativados. 11 de abril, 15:37 UTC


Para usuários do PyCharm (virtualenv):

  1. Execute o ambiente virtual com o shell. (substitua "./venv/bin/activate" pelo seu próprio caminho)

    source ./venv/bin/activate
  2. Executar atualização

    curl https://bootstrap.pypa.io/get-pip.py | python
  3. Reinicie sua instância PyCharm e verifique seu interpretador Python em Preferência .


Eu me deparei com esse problema também. O problema subjacente é que a biblioteca ssl no Python 2.7 versões <2.7.9 não é mais compatível com o mecanismo pip.

Se você estiver executando no Windows, e você (como nós) não puder atualizar facilmente a partir de uma versão incompatível do 2.7, FWIW, descobri que se você copiar os seguintes arquivos de outra instalação da versão mais recente do Python (por exemplo, Python 2.7. 15) em outra máquina para sua instalação:

    Lib\ssl.py
    libs\_ssl.lib
    DLLs\_ssl.dll

ele efetivamente "atualizará" sua camada SSL para uma que seja suportada; então poderíamos usar pip novamente, até mesmo para atualizar o pip.


Eu tentei todas as correções existentes e não trabalhei para mim

Eu re-instalo o python 2.7 (também instalo o pip) baixando o arquivo .pkg em https://www.python.org/downloads/mac-osx/

funciona para mim após a instalação baixado pkg


Isso funcionou para mim, eu instalei a versão mais recente do pip e, em seguida, instalei a biblioteca ( ciscoconfparse ).

Atualizando pip:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

Mas se o próprio comando curl falhar com erro, ou "versão do protocolo de alerta tlsv1" persistir mesmo após a atualização do pip , significa a versão da biblioteca OpenSSL subjacente do sistema operacional < 1.0.1 ou versão Python < 2.7.9 (ou < 3.4 no Python 3 ) não suportam o novo protocolo TLS 1.2 que o pip precisa para se conectar ao PyPI desde cerca de um ano atrás . Você pode verificar isso facilmente no interpretador Python:

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8o 01 Jun 2010'
>>> ssl.PROTOCOL_TLSv1_2
 AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2'

O AttributeError (em vez do esperado '5') significa que o módulo ssl stdlib do Python, compilado contra o lib openssl antigo, está sem suporte para o protocolo TLSv1.2 (mesmo que a biblioteca openssl possa ou possa ser atualizada posteriormente).

Felizmente, isso pode ser resolvido sem atualizar o Python (e todo o sistema), instalando manualmente pacotes extras do Python - o detalhado guia passo-a-passo está disponível aqui no .

Nota, curl e pip e wget todos dependem da mesma lib OpenSSL para estabelecer conexões SSL (use o comando $ openssl version ). O libcurl suporta o TLS 1.2 desde a versão 7.34 curl, mas as versões antigas do curl should ser capazes de se conectar se você tivesse o OpenSSL versão 1.0.2 (ou posterior).

PS
Para o Python 3 , por favor use python3 e pip3 em pip3 lugar (a menos que você esteja em um venv / virtualenv), incluindo o comando curl above :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user


Ou simplesmente a biblioteca necessária simplesmente não está no repositório. Eu sou novato Python e todos os conselhos sobre a atualização pip finalmente mostrado como enganoso. Eu tive apenas que olhar para https://pypi.org/ , encontrar a biblioteca (fluxo de ar no meu caso) parou em alguma versão antiga, após o que foi renomeado. Sim, também essa solução boba também é possível :-).


Para usuários do Python2 WIN10:

1.Desinstale o python completamente, inclua todas as pastas.

2.Faça e instale o último python-2.7.msi (ver 2.7.15)

3. Após o passo 2, você pode encontrar pip também foi instalado.

4.Agora, se o seu sistema não tiver sido alterado, você pode usar pip para instalar pacotes agora. A "versão do protocolo de alerta tlsv1" não aparecerá.


Verifique sua versão do TLS:

python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"

Se sua versão do TLS for menor que 1.2, será necessário fazer upgrade, pois o repositório do PyPI está em um período de indisponibilidade do TLS antigo.

Fonte - Hora de atualizar seu Python: TLS v1.2 em breve será obrigatório

Você pode atualizar a versão do TLS usando o seguinte comando:

sudo apt-get update && sudo apt-get install openssl libssl-dev

Isso deve solucionar seu problema. Boa sorte!

EDIT: Você pode baixar pacotes usando seu próprio repositório de pacotes python privado, independentemente da versão do TLS. Repositório de Pacotes Privados Python







ssl-certificate