pip gera ImportError: não é possível importar o nome HTTPSHandler

4

Depois de instalar o pacote python-pip no Ubuntu 14.04.1, recebo:

$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 351, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2363, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2088, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 10, in <module>
    from pip.util import get_installed_distributions, get_prog
  File "/usr/lib/python2.7/dist-packages/pip/util.py", line 18, in <module>
    from distlib import version
  File "/usr/lib/python2.7/dist-packages/distlib/version.py", line 14, in <module>
    from .compat import string_types
  File "/usr/lib/python2.7/dist-packages/distlib/compat.py", line 31, in <module>
    from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler

Eu verifiquei, tenho libssl-dev e python-openssl instalado e o problema parece ser que o módulo ssl não pode ser importado:

>>> import ssl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/ssl.py", line 61, in <module>
    import _ssl             # if we can't import it, let the error propagate
ImportError: No module named _ssl

Tudo está instalado a partir dos repositórios do Ubuntu, então não sei o que está causando o problema.

    
por metakermit 05.02.2015 / 14:09

2 respostas

4

Depois de algumas dificuldades, descobri. Em suma (não tenho certeza se o primeiro comando é necessário):

sudo apt-get install libssl-dev
sudo apt-get --reinstall install libpython2.7-stdlib

A longa explicação é que, com base nos lugares em que o Python está procurando bibliotecas:

python -c "import sys; print sys.path"

e vendo que havia um arquivo _ssl.so em /usr/lib/python2.7/lib-dynload em um outro servidor 14.04.1 "saudável", descobri que o pacote responsável por isso é libpython2.7-stdlib :

$ dpkg -S /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so
libpython2.7-stdlib:amd64: /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so

Depois de reinstalar libpython2.7-stdlib na máquina original, o arquivo foi recriado e o problema desapareceu.

sudo apt-get --reinstall install libpython2.7-stdlib

(Eu realmente não sei como ou porque este arquivo _ssl está faltando no sistema - eu não sou a única pessoa usando o servidor ...)

    
por metakermit 05.02.2015 / 18:35
-2

Você talvez tenha mais de uma versão do Python instalada no seu sistema. o pip usar a versão errada do python execute python -V para ver a versão padrão do python a ser usada talvez seja necessário alterar o pip para usar a versão correta abrindo /usr/bin/pip com seu editor de texto favorito e altere: #!/usr/bin/python para a versão correta, por ex. #!/usr/bin/python2.6

    
por Ke Lu 11.05.2016 / 11:40