2015-02-03 11 views
10

Я закончил установку pip на linux, команда pip list работает. Но при использовании команды pip install он получил следующую ошибку:Python pip install требует server_hostname

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/basecommand.py", line 232, in main 
    status = self.run(options, args) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/commands/install.py", line 339, in run 
    requirement_set.prepare_files(finder) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/req/req_set.py", line 333, in prepare_files 
    upgrade=self.upgrade, 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/index.py", line 305, in find_requirement 
    page = self._get_page(main_index_url, req) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/index.py", line 783, in _get_page 
    return HTMLPage.get_page(link, req, session=self.session) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/index.py", line 872, in get_page 
    "Cache-Control": "max-age=600", 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/sessions.py", line 473, in get 
    return self.request('GET', url, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/download.py", line 365, in request 
    return super(PipSession, self).request(method, url, *args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/sessions.py", line 461, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/cachecontrol/adapter.py", line 43, in send 
    resp = super(CacheControlAdapter, self).send(request, **kw) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/adapters.py", line 370, in send 
    timeout=timeout 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/packages/urllib3/connectionpool.py", line 518, in urlopen 
    body=body, headers=headers) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/packages/urllib3/connectionpool.py", line 322, in _make_request 
    self._validate_conn(conn) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/packages/urllib3/connectionpool.py", line 727, in _validate_conn 
    conn.connect() 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/packages/urllib3/connection.py", line 238, in connect 
    ssl_version=resolved_ssl_version) 
    File "/usr/local/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py", line 254, in ssl_wrap_socket 
    return context.wrap_socket(sock) 
    File "/usr/local/lib/python2.7/ssl.py", line 350, in wrap_socket 
    _context=self) 
    File "/usr/local/lib/python2.7/ssl.py", line 537, in __init__ 
    raise ValueError("check_hostname requires server_hostname") 
ValueError: check_hostname requires server_hostname 

Как я могу это исправить?

+2

я вижу, другие с той же проблемой; это похоже на версию библиотеки OpenSSL. Пока нет решения. –

+0

Я не уверен, что у вас есть Python 2.7.9 или другая версия, в которой будут изменения для [issue 22921] (http://bugs.python.org/issue22921). Можете ли вы обновить свой вопрос, чтобы дать нам ** полную ** трассировку (из строки с «Traceback» вниз), чтобы показать нам, откуда может возникнуть ошибка? –

+0

У меня была та же проблема, @MartijnPieters, поэтому я добавил для вас полную трассировку. Я использую Python 2.7.9. –

ответ

19

pip 6.1.0 был выпущен, исправляя эту проблему. Вы можете обновить с помощью:

pip --trusted-host pypi.python.org install -U pip 

для самообучения.


Оригинальный ответ:

Это вызвано изменением в Python 2.7.9, который urllib3 необходимо учитывать. См. issue #543 для этого проекта. Ваши библиотеки OpenSSL не поддерживают SNI, что означает, что urllib3 не будет передавать имя хоста в оболочку SSL-сокета, но Python 2.7.9 ожидает, что имя хоста будет передано в любом случае для разных целей.

urllib3 косвенно используется requests (см requests issue 2435), который в свою очередь используется pip.

Я открыл ticket to track this from pip's perspective.

Основные проблемы были устранены разработчиками проекта и ожидают выхода новой версии. Вы можете установить текущую версию развития pip если вы нетерпеливы:

pip install --trusted-host=github.com -U https://github.com/pypa/pip/archive/develop.zip 

Это будет установить пип-6.1.0.dev0, когда 6.1.0 полностью освобожден вы можете обновить снова pip install -U pip, чтобы получить окончательное релиз от PyPI.

15

я получаю тот же вопрос, и обнаружил, что его можно избежать (пипа 6.0.8), в моем случае, как следует

pip --trusted-host pypi.python.org install <thing> 
+0

Это также работает при установке самого пакета: '' 'python2.7 get-pip.py --trusted-host pypi.python.org --user''' –