2015-02-03 30 views
10

Tôi đã cài đặt xong pip trên linux, lệnh pip list hoạt động. Nhưng khi sử dụng lệnh pip install nó đã nhận lỗi sau:Cài đặt pip Python yêu cầu 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 

Làm thế nào tôi có thể sửa lỗi này?

+2

tôi thấy những người khác với cùng một vấn đề; nó xuất hiện liên quan đến phiên bản thư viện OpenSSL. Chưa có giải pháp nào. –

+0

Tôi không chắc liệu bạn có Python 2.7.9 hay phiên bản khác, thay đổi nào cho [issue 22921] (http://bugs.python.org/issue22921). Bạn có thể cập nhật câu hỏi của mình để cung cấp cho chúng tôi ** truy cập đầy đủ ** (từ dòng có 'Traceback' bị gỡ xuống) để cho chúng tôi biết lỗi có thể bắt nguồn từ đâu không? –

+0

Tôi có cùng một vấn đề, @MartijnPieters, vì vậy tôi đã thêm một truy nguyên đầy đủ cho bạn. Tôi đang sử dụng Python 2.7.9. –

Trả lời

19

pip 6.1.0 đã được phát hành, khắc phục sự cố này. Bạn có thể nâng cấp bằng:

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

để tự nâng cấp.


Original câu trả lời:

này được gây ra bởi một sự thay đổi trong Python 2.7.9, mà urllib3 cần phải giải thích cho. Xem issue #543 cho dự án đó. Thư viện OpenSSL của bạn không hỗ trợ SNI, có nghĩa là urllib3 sẽ không chuyển tên máy chủ vào trình bao bọc SSL socket, nhưng Python 2.7.9 dự kiến ​​tên máy chủ sẽ được chuyển cho dù sao cho các mục đích khác nhau.

urllib3 được sử dụng gián tiếp bởi requests (xem requests issue 2435), lần lượt được sử dụng bởi pip.

Tôi đã mở ticket to track this from pip's perspective.

Các vấn đề cơ bản đã được cố định bởi người bảo trì dự án và đang chờ bản phát hành mới. Bạn có thể cài đặt các phiên bản phát triển hiện tại của pip nếu bạn là thiếu kiên nhẫn:

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

này sẽ cài đặt pip-6.1.0.dev0, khi 6.1.0 được phát hành đầy đủ, bạn có thể nâng cấp một lần nữa với pip install -U pip để có được trận chung kết phát hành từ PyPI.

15

tôi nhận được cùng một vấn đề, và thấy rằng nó có thể tránh được (pip 6.0.8) trong trường hợp của tôi như sau

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

Điều này cũng hoạt động khi tự cài đặt pip: '' 'python2.7 get-pip.py --trusted-host pypi.python.org --user''' –

Các vấn đề liên quan