2015-02-03 13 views
10

Ho finito di installare pip su linux, il comando pip list funziona. Ma quando si utilizza il comando pip install ha ottenuto il seguente errore:L'installazione di Python richiede 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 

Come posso risolvere questo problema?

+2

vedo altri con lo stesso problema; sembra correlato alla versione della libreria OpenSSL. Nessuna soluzione ancora. –

+0

Non sono sicuro che tu abbia Python 2.7.9 o una versione diversa, che farebbe le modifiche per [numero 22921] (http://bugs.python.org/issue22921). Puoi aggiornare la tua domanda per darci il ** completo ** traceback (dalla riga con 'Traceback' in basso) per mostrarci da dove potrebbe provenire l'errore? –

+0

Ho avuto lo stesso problema, @MartijnPieters, quindi ho aggiunto una traccia completa per te. Sto usando Python 2.7.9. –

risposta

19

pip 6.1.0 è stato rilasciato, risolvendo questo problema. È possibile effettuare l'aggiornamento con:

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

per eseguire l'aggiornamento automatico.


risposta originale:

questo è causato da un cambiamento in Python 2.7.9, che urllib3 ha la necessità di tenere conto di. Vedi issue #543 per quel progetto. Le tue librerie OpenSSL non supportano SNI, il che significa che urllib3 non passerà nel nome host al wrapper socket SSL, ma Python 2.7.9 si aspetta che il nome host venga passato in ogni caso per scopi diversi.

urllib3 viene indirettamente utilizzato da requests (vedi requests issue 2435), che a sua volta viene utilizzato da pip.

Ho aperto un ticket to track this from pip's perspective.

I problemi sottostanti sono stati risolti dai responsabili del progetto e in attesa di una nuova versione. È possibile installare la versione di sviluppo attuale del pip se siete impazienti:

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

Questo sarà installare pip-6.1.0.dev0, quando 6.1.0 è completamente rilasciato è possibile aggiornare di nuovo con pip install -U pip per ottenere la finale rilascio da PyPI.

15

ottengo lo stesso problema, e scoprire che può essere evitato (pip 6.0.8) nel mio caso come segue

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

Funziona anche durante l'installazione di pip: '' 'python2.7 get-pip.py --trusted-host pypi.python.org --user''' –

Problemi correlati