Windows 上的 Pip SSL 错误 [英] Pip SSL Error on Windows
问题描述
我在没有完全控制入站/出站流量处理的环境中在 Windows 7 64 位上使用 Python 3.x.直到本周,我已经能够在 pip 中使用 --trusted-host pypi.python.org
标志并且一切正常.本周,即使使用 --trusted-host
标志,我也开始收到以下错误.
I use Python 3.x on Windows 7 64 bit in an environment without full control of inbound/outbound traffic processing. Up till this week I've been able to use the --trusted-host pypi.python.org
flag with pip and everything worked. This week I have started getting the following error even with the --trusted-host
flag.
Could not fetch URL https://pypi.python.org/simple/pytubes/: There was a probl
em confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:720) - skipping
鉴于本周 pypi 的变化,我尝试将 --trusted-host
标志更改为 https://files.pythonhosted.org/packages/
,但是这似乎没有帮助.
I tried changing the --trusted-host
flag to https://files.pythonhosted.org/packages/
in light of the pypi change this week, but that didn't seem to help.
我还尝试下载和安装 certifi、wincerstore 和 win32 certifi 的轮子以及针对此类问题的其他 stackoverflow 建议,例如 digistore .pem cert 和 pip.ini 文件,但没有任何成功.
I also tried downloading and installing the wheels of certifi, wincerstore and win32 certifi as well as other stackoverflow suggestions for this kind of issue such as the digistore .pem cert and pip.ini file without any success.
pip 安装失败并显示 "连接错误: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:598)"
最后,我尝试按照此处的说明将 pip 从 pip 9.0.3 升级到 pip 10:https://pip.pypa.io/en/stable/installing/
Finally I tried upgrading pip to pip 10 from pip 9.0.3 following the instructions here: https://pip.pypa.io/en/stable/installing/
对于 curl 下载,我必须传入 -k
,并且运行 python get-pip.py
失败,并出现与 pip 类似的 ssl 错误:
For the curl download I had to pass -k
in, and running python get-pip.py
fails with a similar ssl error to pip:
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)': /simple/pip/
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)) - skipping
Could not find a version that satisfies the requirement pip (from versions: )
No matching distribution found for pip
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)) - skipping
感谢对后续步骤的任何建议,因为 .pem 文件、Python CA 包和 --trusted-host
标志没有起到作用
Appreciate any suggestions for next steps since the .pem file, Python CA packages and --trusted-host
flag didn't do the trick
来自以下答案的 pip 中带有 -vvv 标志的新输出.
New output with the -vvv flag in pip from an answer below.
> pip install pytubes -vvv
Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
Collecting pytubes
1 location(s) to search for versions of pytubes:
* https://pypi.python.org/simple/pytubes/
Getting page https://pypi.python.org/simple/pytubes/
Looking up "https://pypi.python.org/simple/pytubes/" in the cache
No cache entry available
Starting new HTTPS connection (1): pypi.python.org
Could not fetch URL https://pypi.python.org/simple/pytubes/: There was a probl
em confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:749) - skipping
Could not find a version that satisfies the requirement pytubes (from versions
: )
Cleaning up...
No matching distribution found for pytubes
Exception information:
Traceback (most recent call last):
File "C:ProgramDataAnaconda3libsite-packagespipasecommand.py", line 215
, in main
status = self.run(options, args)
File "C:ProgramDataAnaconda3libsite-packagespipcommandsinstall.py", lin
e 335, in run
wb.build(autobuilding=True)
File "C:ProgramDataAnaconda3libsite-packagespipwheel.py", line 749, in b
uild
self.requirement_set.prepare_files(self.finder)
File "C:ProgramDataAnaconda3libsite-packagespip
eq
eq_set.py", line 380
, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "C:ProgramDataAnaconda3libsite-packagespip
eq
eq_set.py", line 554
, in _prepare_file
require_hashes
File "C:ProgramDataAnaconda3libsite-packagespip
eq
eq_install.py", line
278, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "C:ProgramDataAnaconda3libsite-packagespipindex.py", line 514, in f
ind_requirement
'No matching distribution found for %s' % req
pip.exceptions.DistributionNotFound: No matching distribution found for pytubes
Looking up "https://pypi.python.org/pypi/pip/json" in the cache
No cache entry available
Starting new HTTPS connection (1): pypi.python.org
There was an error checking the latest version of pip
Traceback (most recent call last):
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3connectionpool.py", line 595, in urlopen
chunked=chunked)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3connectionpool.py", line 352, in _make_request
self._validate_conn(conn)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3connectionpool.py", line 831, in _validate_conn
conn.connect()
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3connection.py", line 289, in connect
ssl_version=resolved_ssl_version)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3utilssl_.py", line 308, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:ProgramDataAnaconda3libssl.py", line 401, in wrap_socket
_context=self, _session=session)
File "C:ProgramDataAnaconda3libssl.py", line 808, in __init__
self.do_handshake()
File "C:ProgramDataAnaconda3libssl.py", line 1061, in do_handshake
self._sslobj.do_handshake()
File "C:ProgramDataAnaconda3libssl.py", line 683, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c
:749)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestsadapters
.py", line 423, in send
timeout=timeout
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestspackages
urllib3connectionpool.py", line 621, in urlopen
raise SSLError(e)
pip._vendor.requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VER
IFY_FAILED] certificate verify failed (_ssl.c:749)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:ProgramDataAnaconda3libsite-packagespiputilsoutdated.py", line
126, in pip_version_check
headers={"Accept": "application/json"},
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestssessions
.py", line 488, in get
return self.request('GET', url, **kwargs)
File "C:ProgramDataAnaconda3libsite-packagespipdownload.py", line 386, i
n request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestssessions
.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestssessions
.py", line 596, in send
r = adapter.send(request, **kwargs)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendorcachecontroladap
ter.py", line 47, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File "C:ProgramDataAnaconda3libsite-packagespip\_vendor
equestsadapters
.py", line 497, in send
raise SSLError(e, request=request)
pip._vendor.requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certi
ficate verify failed (_ssl.c:749)
推荐答案
最终对我有用的是添加属于新 pypi 路由的所有域.
What ended up working for me is to add all the domains that are part of the new pypi routing.
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <package>
也可以在 pip.ini 文件中设置.
Which can also be setup in a pip.ini file.
这篇关于Windows 上的 Pip SSL 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!