即使我pip install dedupe
或pip install --trusted-host pypi.python.org dedupe
无论如何,输出总是相同的:
收集重复数据删除
重试(重试(总数= 4,连接=无,读取=无, redirect = None,status = None))连接断开后 'SSLError(SSLError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书 验证失败(_ssl.c:777)'),)':/ simple / dedupe /
重试...跳过
找不到满足需求重复数据删除的版本(来自版本:)没有找到重复数据删除的匹配分布
所以我卸载了anaconda并重新安装了它。同样的事情。
你认为问题是我的_ssl.c文件(我不知道它在哪里)必须是腐败的还是什么?为什么pip需要参考,如果我告诉它绕过ssl验证呢?
答案 0 :(得分:19)
它可能与PyPI 2018 change的domains有关 请确保您的防火墙/代理允许访问/来自:
所以你可以试试像:
$ python -m pip
install
--trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org [--proxy ...] [ --user]<packagename>
请参阅$ pip help install
了解--user
选项说明(如果在virtualenv中,则省略)。
--trusted-host
选项实际上并未绕过SSL / TLS,但允许在(并且仅当)它没有有效(或任何)HTTPS时将主机标记为受信任。它对PiPY来说并不重要,因为pypi.org(以前称为pypi.python.org) 使用HTTPS并且前面有CDN,它始终强制执行TLSv1.2握手要求,无论连接pip客户端选项..但是如果你有自己的pypi.org本地镜像,只有HTTP访问权限,那么--trusted-host
可能很方便。哦,如果你是代理人的背后,请务必同时指明:--proxy [user:passwd@]proxyserver:port
有些公司代理甚至可能会动态地replace获得HTTPS连接的证书。如果您的系统时钟不同步,它也可能会破坏SSL验证过程。
如果防火墙/代理/时钟不是问题,请检查pip的SSL握手中使用的SSL证书。实际上,您可以获得当前的cacert.pem(来自curl的Mozilla&lt; CA}捆绑包)并使用pip选项--cert
进行尝试:
$ pip --cert ~/cacert.pem install --user <packagename>
其中--cert
参数是PEM格式的备用CA包的系统路径。 (关于--user选项,请参见下文) 或者,可以创建自定义config~ / .pip / pip.conf并将选项指向有效的系统证书(或您的cacert.pem)作为解决方法,例如:
[全球]
cert = /etc/pki/tls/external-roots/ca_bundle.pem
(或另一个pem文件)
甚至可以使用您可靠的CA捆绑包手动替换pip中的原始cacert.pem(例如,如果您的点数非常老)。在证书问题的情况下,较旧的pip版本知道在pip / _vendor / requests / cacert.pem和系统存储(例如/etc/ssl/certs/ca-certificates.crt
或/etc/pki/tls/certs/ca-bundle.crt
)之间回退,但在最近的点子中它不再是这种情况,因为它似乎完全依赖于pip / _vendor / certifi / cacert.pem
基本上,pip包使用requests
,urllib3
使用certifi
,其中包括验证SSL证书;并且所有这些都在pip内运送(出售),以及提供TLS验证所需的当前CA捆绑包(cacert.pem文件)的$ conda update pip
包(也包括在pip 9.0.2中)。请求本身在内部使用urllib3和certifi,在9.0.2之前,pip使用了来自请求或系统的cacert.pem。这一切意味着实际更新pip可能有助于修复CERTIFICATE_VERIFY_FAILED错误,特别是如果很久以前部署了OS和pip:
OP使用了anaconda,所以他们可以尝试:
pip
- 因为issues can arise如果conda和$ conda config --add channels conda-forge; conda update pip
在同一环境中一起使用。如果没有可用的pip版本更新,他们可以尝试:
pip
或者,可以单独使用conda来直接安装/管理python包:它是一个完全独立于pip的工具,但在包和venv管理方面提供了类似的功能。它的包不是来自PyPI,而是来自anaconda's own repositories。
问题是,如果你混合使用并在$ sudo apt-get install python-pip
之后运行conda,前者可以覆盖并破坏通过pip安装的包(及其依赖项),并使其全部无法使用。所以建议仅使用一个或另一个,或者,如果必须,在 conda之后使用仅pip(并且在pip之后没有conda),并且仅在隔离的conda环境中。
在没有conda的普通Linux Python安装上:
如果您使用的是OS分发版提供的pip版本,请使用供应商提供的升级进行系统范围的pip更新:
$ sudo yum install python27-pip
或:$ python -m pip install --user --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org --upgrade pip
由于发行版通常落后于PyPI,因此可能无法获得一些更新。在这种情况下,您可以在用户级别(在 $ HOME 目录中)或者在virtualenv中升级点数,例如:
--user
(如果在virtualenv中省略--user
)
$ curl -LO https://bootstrap.pypa.io/get-pip.py && python get-pip.py --user
开关只会为当前用户(在你家〜/ .local / lib /中)而不是整个操作系统升级pip,这是避免干扰系统python包的一个好习惯。默认情况下,它在最近的Ubuntu / Fedora版本中分发的pip中启用。如果您不使用此选项并碰巧覆盖操作系统级别的系统点,请注意如何解决ImportError。
或者(也在用户级别)你可以尝试:
-vvv
PyPA script包含一个从pip._vendor.certifi中提取.pem SSL包的包装器。
否则,如果仍然不行,请尝试使用SSLError
选项运行pip以向输出添加详细程度,并检查现在是否tlsv1 alert protocol version引起了另一个{{1}}。
答案 1 :(得分:7)
这对我有用,试试这个:
pip install --trusted-host=pypi.org --trusted-host=files.pythonhosted.org --user {name of whatever I'm installing}
答案 2 :(得分:4)
我的方法是简化@Alex C的答案:
const values = [
{id:1, name:"first"},
{id:2, name:"second"}
];
console.log(values.filter(element => element.id === 2));
console.log(values.find(element => element.id === 2));
答案 3 :(得分:0)
以上错误或类似错误是由于虚拟机(VM)不能及时同步引起的,我的来宾Ubuntu VM是过去几天。
我推荐使用此虚拟机来获取正确的网络时间:
sudo timedatectl set-ntp on
这使Ubuntu来宾操作系统获得网络时间。 (您可能必须提供网络时间源。我使用了这篇文章:Digital Ocean - How to set time on Ubuntu)
检查时间是否正确:
timedatectl
重新运行失败的pip命令。