Estou usando o Python 2.7.3 e solicitações. Eu instalei solicitações via pip. Eu acredito que é a versão mais recente. Estou executando o Debian Wheezy.
Eu usei solicitações várias vezes no passado e nunca enfrentei esse problema, mas parece que ao fazer solicitações https, Requests
recebo uma InsecurePlatform
exceção.
O erro menciona urllib3
, mas não o tenho instalado. Eu o instalei para verificar se o erro foi resolvido, mas não foi.
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and
may cause certain SSL connections to fail. For more information, see
https://urllib3.readthedocs.org/en/latest
/security.html#insecureplatformwarning.
Alguma idéia de por que estou recebendo isso? Eu verifiquei os documentos, conforme especificado na mensagem de erro, mas eles estão dizendo para importar o urllib3 e desativar o aviso ou fornecer um certificado.
fonte
sudo apt-get install python-dev libffi-dev libssl-dev
pip install 'requests[security]'
Os Pedidos 2.6 introduziram este aviso para usuários de python anteriores ao 2.7.9, apenas com módulos SSL disponíveis.
Supondo que você não possa atualizar para uma versão mais recente do python, isso instalará mais bibliotecas SSL python atualizadas:
No entanto, isso pode falhar em alguns sistemas sem as dependências de compilação para pyOpenSSL. Nos sistemas debian, executar isso antes do comando pip acima deve ser suficiente para o pyOpenSSL criar:
fonte
Eu não uso isso na produção, apenas alguns corredores de teste. E para reiterar a documentação urllib3
Editar / Atualizar:
O seguinte também deve funcionar:
fonte
Se você não conseguir atualizar sua versão do Python para 2.7.9 e quiser suprimir avisos,
você pode fazer o downgrade da sua versão de 'pedidos' para a 2.5.3:
Sobre a versão: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
fonte
De fato, você pode tentar isso.
requests.post("https://www.google.com", verify=False)
você pode ler o código para solicitações.
"C:\Python27\Lib\site-packages\requests\sessions.py"
fonte
Todas as soluções fornecidas aqui não ajudaram (estou restrito ao python 2.6.6). Encontrei a resposta em uma opção simples para passar para o pip:
Isso indica ao pip que não há problema em pegar o módulo em pypi.python.org.
Para mim, o problema é o proxy da minha empresa por trás do firewall que faz com que pareça um cliente mal-intencionado para alguns servidores. Viva segurança.
Atualização: consulte a resposta do @Alex para alterações nos domínios PyPi e
--trusted-host
opções adicionais que podem ser adicionadas. (Copiei / colei aqui, mas a resposta dele, marcou com +1)fonte
Esta resposta não tem relação, mas se você quiser se livrar do aviso e receber o seguinte aviso de solicitações:
InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Você pode desativá- lo adicionando a seguinte linha ao seu código python:
requests.packages.urllib3.disable_warnings()
fonte
Eu tive que ir para
bash
(do ZSH) primeiro. Entãocorrigiu o problema.
fonte
Este veio para mim no Ubuntu 14.04 (com Python 2.7.6) na semana passada depois que eu fiz uma
apt-get dist-upgrade
que incluíalibssl1.1:amd64
a partirdeb.sury.org
.Desde que eu corro
certbot-auto renew
de um trabalho cron, também uso o--no-self-upgrade
para reduzir a manutenção não programada. Esta parece ter sido a fonte do problema.Para corrigir o erro, tudo o que eu precisava fazer era tornar-se root (com
su
o--login
switch) e deixar acertbot-auto
atualização em si. Ou seja:em vez do que normalmente é executado no crontab do root:
Depois disso, permite que as renwals de criptografia sejam executadas normalmente mais uma vez.
fonte
Para mim, nenhum trabalho eu preciso atualizar pip ....
Debian / Ubuntu
instalar dependências
atualizar pip e instalar pacotes
Se você deseja remover dependências
fonte
Acabei de ter um problema semelhante em um servidor CentOS 5, onde instalei o python 2.7.12 em / usr / local, sobre uma versão muito mais antiga do python2.7. A atualização para o CentOS 6 ou 7 não é uma opção neste servidor no momento.
Alguns dos módulos python 2.7 ainda existiam na versão mais antiga do python, mas o pip falhou ao atualizar porque o pacote de criptografia mais recente não é suportado pelos pacotes do CentOS 5.
Especificamente, 'solicitações de instalação do pip [segurança]' estava falhando porque a versão openssl no CentOS 5 era 0.9.8e, que não é mais suportada pela criptografia> 1.4.0.
Para resolver o problema original dos POs, fiz o seguinte:
Esta criptografia instalada 1.3.4, que funciona com o openssl-0.9.8e. A criptografia 1.3.4 também é suficiente para satisfazer o requisito para o seguinte comando.
Este comando agora é instalado porque não tenta instalar a criptografia> 1.4.0.
Observe que no Centos 5 eu também precisava:
Para permitir a criação de criptografia
fonte
Abaixo está como está funcionando para mim no Python 3.6:
fonte
Não instale pyOpenSSL, pois em breve ele será descontinuado. A melhor abordagem atual é
fonte
se você quiser interromper um aviso inseguro, como:
Faz:
é a chave, os seguintes não são bons nisso:
ou
mas, você PRECISA SABER, isso pode causar riscos em potencial à segurança .
fonte
Eu tive o mesmo problema com o
Mac
Pycharm community edition 2019.3
interpretador Python 3.6.
A atualização do pip com 20.0.2 funcionou para mim.
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package
fonte