зернышко повышает ImportError: не может импортировать имя HTTPSHandler

После установки python-pip пакет в Ubuntu 14.04.1 я добираюсь:

$ 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

Я проверил, я действительно имею libssl-dev и python-openssl установленный и проблема, кажется, что ssl модуль не может быть импортирован:

>>> 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

Все установлено из репозиториев Ubuntu, тем не менее, таким образом, я не знаю то, что вызывает проблему.

4
задан 5 February 2015 в 16:09

2 ответа

После некоторой борьбы я понял его. Короче говоря (не действительно уверенный, если первая команда необходима):

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

долгое объяснение состоит в том, что, на основе мест Python ищет библиотеки:

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

и видя, что было _ssl.so файл в /usr/lib/python2.7/lib-dynload на "здоровый" другом 14.04.1 сервера, я выяснил, что пакет, ответственный за это, 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

После переустановки libpython2.7-stdlib на исходной машине, файл был воссоздан, и проблема ушла.

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

(я действительно не знаю, как или почему этот _ssl файл отсутствовал в системе - я не единственный человек, использующий сервер...)

4
ответ дан 1 December 2019 в 10:19

У Вас, возможно, есть больше чем одна версия Python, установленная в Вашей системе. использование зернышка, которое неправильная версия Python выполняет python -V для наблюдения версии значения по умолчанию Python для использования Вас, возможно, должно измениться, зернышко для использования правильной версии путем открытия /usr/bin/pip с любимым текстовым редактором затем изменитесь: #!/usr/bin/python к правильной версии, например, #!/usr/bin/python2.6

-2
ответ дан 1 December 2019 в 10:19

Другие вопросы по тегам:

Похожие вопросы: