我是Python新手并尝试在Windows 7上> pip install linkchecker
。有些注意事项:
> pip install scrapy
也会导致SSL错误。python
和pip
> pip search linkchecker
有效。也许这是因为pip搜索不会验证网站的SSL证书。运行pip install linkchecker
后,以下是 pip.log 的内容:
Downloading/unpacking linkchecker
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Getting page https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
Cannot fetch index base URL https://pypi.python.org/simple/
URLs to search for versions for linkchecker:
* https://pypi.python.org/simple/linkchecker/
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
答案 0 :(得分:476)
您可以将pypi.org
和files.pythonhosted.org
设置为可信主机来忽略SSL错误。
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
注意:在2018年4月的某个时间,Python Package Index已从pypi.python.org
迁移到pypi.org
。这意味着使用旧域的“可信主机”命令不再有效。
自pip 10.0发布以来,您应该只需升级pip
本身即可永久修复此问题:
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
或仅通过reinstalling it获取最新版本:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(...然后使用相关的Python解释器运行get-pip.py
)。
pip install <otherpackage>
应该在此之后工作。如果没有,那么您将需要做更多,如下所述。
您可能需要add the trusted hosts and proxy to your config file。
pip.ini
(Windows)或pip.conf
(unix)
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
替代解决方案(安全性较低)
大多数答案可能会带来安全问题。
有助于轻松安装大多数python包的两个解决方法是:
easy_install <package_name>
。请注意,找不到某些包或会出现小错误。pip install wheel_package_name.whl
安装软件包。答案 1 :(得分:94)
您可以使用此参数指定证书:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
请参阅:Docs » Reference Guide » pip
如果指定公司的根证书不起作用,则cURL可能会有效:http://curl.haxx.se/ca/cacert.pem
您必须使用PEM文件而不是CRT文件。如果您有CRT文件,则需要convert the file to PEM 评论中的报告现在可以使用CRT文件,但我尚未验证。
同时检查:SSL Cert Verification。
答案 2 :(得分:58)
kenorb’s answer非常有用(太棒了!)。
在他的解决方案中,也许这是最简单的解决方案:
--trusted-host
例如,在这种情况下,您可以执行
pip install --trusted-host pypi.python.org linkchecker
pem文件(或其他任何内容)是不必要的。
答案 3 :(得分:27)
答案非常相似,有点令人困惑。就我而言,我公司网络中的证书就是问题所在。我能够使用以下方法解决问题:
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
As seen here。如果不需要详细输出,则可以省略-vvv参数
答案 4 :(得分:22)
我发现最简单的方法是从https://www.digicert.com/digicert-root-certificates.htm#roots下载并使用DigiCert的“DigiCert High Assurance EV Root CA”
您可以通过点击地址栏中的锁定图标来访问https://pypi.python.org/以验证证书颁发者,或使用openssl增加您的极客信誉:
$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
证书链中的最后一个CN值是您需要下载的CA的名称。
对于一次性工作,请执行以下操作:
(最后一行假定您使用的是bash shell),然后再运行pip。
curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem
要使其可重复使用,请将DigiCertHighAssuranceEVRootCA.crt置于常用位置,并在〜/ .bashrc中相应地导出PIP_CERT。
答案 5 :(得分:17)
要一劳永逸地解决此问题,您可以验证您是否有pip.conf
个文件。
pip.conf
所在的位置
在Unix上,默认配置文件是:
$HOME/.config/pip/pip.conf
,它尊重XDG_CONFIG_HOME环境变量。在macOS上,如果目录
$HOME/Library/Application Support/pip/pip.conf
存在,则配置文件为$HOME/Library/Application Support/pip
,$HOME/.config/pip/pip.conf
在Windows上,配置文件为
%APPDATA%\pip\pip.ini
。
在virtualenv中:
在Unix和macOS上,文件为
$VIRTUAL_ENV/pip.conf
在Windows上,文件为:
%VIRTUAL_ENV%\pip.ini
您的pip.conf
应如下:
[global]
trusted-host = pypi.python.org
创建pip install linkchecker
文件后, linkchecker
安装了pip.conf
而没有抱怨。
答案 6 :(得分:16)
您有以下可能性来解决CERTIFICATE_VERIFY_FAILED
的问题:
使用--cert <trusted.pem>
或CA_BUNDLE
变量指定备用CA捆绑包。
E.g。您可以从Web浏览器转到失败的URL并将根证书导入您的系统。
运行python -c "import ssl; print(ssl.get_default_verify_paths())"
检查当前的(验证是否存在)。
SSL_CERT_DIR
,SSL_CERT_FILE
),可用于指定不同的证书数据库 PEP-476 。--trusted-host <hostname>
将主机标记为可信任。verify=False
requests.get
(参见:SSL Cert Verification)。--proxy <proxy>
来避免证书检查。详情请见:TLS/SSL wrapper for socket objects - Verifying certificates。
答案 7 :(得分:15)
对我来说,此问题是通过创建文件夹来解决的
pip
,并带有文件:pip.ini
在
C:\Users\<username>\AppData\Roaming\
例如:
C:\Users\<username>\AppData\Roaming\pip\pip.ini
我在里面写道:
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
我重新启动python,然后pip永久信任这些站点,并使用它们从中下载软件包。
答案 8 :(得分:10)
我最近遇到了这个问题,因为我公司的网络内容过滤器使用自己的证书颁发机构,因此可以过滤SSL流量。在我的情况下,PIP似乎没有使用系统的CA证书,产生你提到的错误。将PIP降级到版本1.2.1后面会出现一系列问题,所以我回到了Python 3.4附带的原始版本。
我的解决方法非常简单:使用easy_install
。要么它没有检查证书(比如旧的PIP版本),要么它知道使用系统证书,因为它每次都适用于我,我仍然可以使用PIP卸载用easy_install安装的软件包。
如果这不起作用且您可以访问没有问题的网络或计算机,您可以随时设置自己的个人PyPI服务器:how to create local own pypi repository index without mirror?
我几乎这样做,直到我尝试使用easy_install
作为最后的努力。
答案 9 :(得分:9)
您可以尝试使用http而不是https来绕过SSL错误。当然,这在安全方面并不是最优的,但是如果你赶时间应该可以做到这一点:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
答案 10 :(得分:8)
也许我来晚了,
对我来说,结果表明我的日期和时间在Raspberry Pi上配置错误。结果是使用https://files.pythonhosted.org/服务器的所有SSL和HTTPS连接均失败。
像这样更新它:
sudo date -s "Wed Aug 23 11:12:00 GMT+1 2018"
dpkg-reconfigure tzdata
答案 11 :(得分:8)
使用答案
[0,0,0,1]
的工作。但是你必须检查是否有重定向或缓存pip install --trusted-host pypi.python.org <package>
正在命中。在带有pip
的Windows 7上,我必须运行
pip 9.0.1
您可以使用详细标记找到这些。
答案 12 :(得分:6)
我尝试了此答案博客中提供的大多数解决方案,但是没有一个解决方案,在尝试安装python软件包时,我遇到了这个 ssl certificant error
我通过以下命令成功完成
:python -m pip install PACKAGENAME --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
答案 13 :(得分:6)
TLDR:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv
因此,已经有30多个问题的答案,但是2020年6月(处于锁定状态)对我没有任何帮助。
所有这些都是在过去的不同时刻给出的。将来,我将尝试使此答案始终有效。
问题是pip在安装软件包时会尝试与存储软件包的主机URL连接,而在下载时不信任该URL。
有两种方法可以解决此问题: 简单又不安全: 1.检查点子点击哪个URL来下载软件包。
pip install <packageName> -vvv
如果您仔细检查输出,您会看到它可能会指向pypi.org之类的URL,或者可能是pypi.python.org。
如果是,只需将可信主机选项添加到以下命令中即可:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv
或者如果您正在使用需求文件:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv
安全方式:
转到这些URL的每一个并下载其公共证书(只是通过google搜索),创建一个链,将其存储为.pem文件并在以下命令下运行:
pip --cert YourPemFile.pem install <packageName>
答案 14 :(得分:5)
首先,
pip install --trusted-host pypi.python.org <package name>
对我不起作用。我一直收到CERTIFICATE_VERIFY_FAILED错误。但是,我在错误消息中注意到他们引用了“pypi.org”网站。所以,我使用它作为可信主机名而不是pypi.python.org。那几乎让我在那里;使用CERTIFICATE_VERIFY_FAILED,负载仍然失败,但稍后。找到对失败的网站的引用,我将其作为可信主机包含在内。最终对我有用的是:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
答案 15 :(得分:5)
您有4个选项:
$ pip install --cert /path/to/mycertificate.crt linkchecker
pip.conf
创建此文件:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
并添加以下行:
[global]
cert = /path/to/mycertificate.crt
$ pip install --trusted-host pypi.python.org linkchecker
创建此文件:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
并添加以下行:
[global]
trusted-host = pypi.python.org
答案 16 :(得分:4)
使用ActivePython 2.7.8,ActivePython 3.4.1和&#34; stock&#34;尝试pip install ftputil
时遇到同样的问题。 64位Windows 7企业版上的Python 3.4.2。所有尝试都失败并出现与OP相同的错误。
通过降级到pip 1.2.1来解决Python 3.4.2的问题:easy_install pip==1.2.1
(参见https://stackoverflow.com/a/16370731/234235)。同样的修复也适用于ActivePython 2.7.8。
2013年3月报告的错误仍然存在:https://github.com/pypa/pip/issues/829。
答案 17 :(得分:3)
永久修复
pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org
例如:
pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
答案 18 :(得分:3)
在我使用--verbose选项查看它想要访问files.pythonhosted.org而不是pypi.python.org之前,此页面上的任何内容都不适用于我:
pip install --trusted-host files.pythonhosted.org <package_name>
因此,请通过--verbose选项检查其实际失败的网址。
答案 19 :(得分:3)
把这个放在这里,因为我没有看到其他人提到它。
您可以将全局可信主机设置为 pip,如下所示:
py -m pip config set global.trusted-host pypi.org
最重要的是,它将返回放置 pip.ini/pip.conf 的正确位置
答案 20 :(得分:3)
由于与 netscope 相关的公司网络安全,我遇到了 ssl 问题。我的机器是带有 python 3.9 的 Windows 10,以下命令对我有用。
pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org" --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
答案 21 :(得分:2)
您可以尝试忽略“https”:
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..]
答案 22 :(得分:2)
我通过删除我的点子并安装旧版本的pip解决了这个问题: https://pypi.python.org/pypi/pip/1.2.1
答案 23 :(得分:2)
简短解决方案:
easy_install <package name>
例如:
easy_install pandas
替代解决方案:
pip install <package_name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
示例:
pip install pandas --trusted-host pypi.org --trusted-host files.pythonhosted.org
答案 24 :(得分:1)
使用pypi.org
向受信任的站点添加--trusted-host
的所有解决方案都不安全,基本上会跳过https,不能真正解决问题。
使用此方法的每个人,请尝试以此方式更新您的证书并删除--trusted-host
标志:
sudo yum -y update ca-certificates
export PIP_CERT=/etc/ssl/certs/ca-bundle.crt
答案 25 :(得分:1)
我尝试使用公司代理,但失败了。
我正在使用 Python 3.6
。
pip.conf
文件丢失。
以下是解决问题的步骤:
安装证书包:-pip --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org install certifi
创建一个 pip.conf
文件,如下所示:
$ cd ~/.config
$ mkdir pip
$ cd pip
$ nano pip.conf
将以下内容添加到新创建的 .conf
文件中,并保存。
[global]
trusted-host = pypi.python.org files.pythonhosted.org pypi.org pypi.io
一切都完成了,它开始工作了。
答案 26 :(得分:1)
在安装任何其他软件包之前运行 pip install certifi
解决了我的问题
答案 27 :(得分:1)
Vaulstein的答案帮助了我。
在我的电脑上的任何地方都找不到pip.ini文件。以下也是。
或直接在Windows资源管理器中键入%AppData%。
在该appdata文件夹内创建一个名为pip的文件夹。
在您刚创建的pip文件夹中,创建一个名为pip.ini的简单文本文件
使用您选择的简单编辑器将以下配置设置粘贴到该文件中。
pip.ini文件:
[list]
format=columns
[global]
trusted-host = pypi.python.org pypi.org
您现在应该可以了。
答案 28 :(得分:1)
对我来说这是因为以前我正在运行脚本设置代理(到fiddler),重新打开控制台或重新启动修复问题。
答案 29 :(得分:1)
最近我在使用visual studio 2015的python 3.6中遇到了同样的问题。花了2天后,我得到了解决方案,并且它对我来说很好。
尝试使用pip或visual studio安装numpy时出现以下错误 收集numpy 无法获取网址https://pypi.python.org/simple/numpy/:确认ssl证书时出现问题:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:748) - 跳过 找不到满足要求numpy的版本(来自版本:) 找不到numpy
的匹配分布决议:
适用于Windows操作系统
答案 30 :(得分:1)
一个解决方案( for Windows )是在pip.ini
文件夹上创建一个名为%AppData%\pip\
的文件(如果文件夹不存在则创建该文件夹) )并插入以下详细信息:
[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port
...然后我们可以执行安装说明:
pip3 install PyQt5
另一个选择是使用代理和证书的参数安装包...
$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
--cert C:/certs/python_root.pem PyQt5
要将证书*.cer
文件转换为所需的*.pem
格式,请执行以下指示:
$ openssl x509 -inform der -in python_root.cer -out python_root.pem
希望这有助于某人!
答案 31 :(得分:0)
如果您的system.eg中缺少某些证书,则可能会出现此问题opensuse install ca-certificates-mozilla
答案 32 :(得分:0)
我尝试了此列表中的所有内容!没有人成功。 我意识到我的连接不稳定 - 所以我插上调制解调器的电源 1 分钟 解决了我的问题:)
答案 33 :(得分:0)
这对我有用:
$ sudo mv /etc/ssl/cert.pem /etc/ssl/cert.pem.BAK
在我的情况下,我在尝试运行 aws CLI 命令时遇到了相同的 pip 安装错误和类似错误。一切都在一周内工作,然后不是下一个。 AFAIK,我没有安装任何会破坏 SSL 的东西。
我在 MacOS Big Sur 上尝试了通过 pyenv 和 Brew 安装的各种版本的 Python 3.x。我尝试了此线程中列出的所有相关解决方案。我什至重新安装了操作系统,但没有骰子。
答案 34 :(得分:0)
尽管有超过 40 个答案,但 AFAIK 没有一个能完全解决我的问题。
我使用的是 macOS Catalina 10.15.5,在公司代理后面。
尝试安装或升级软件包时,出现以下错误
>>> pip install <package name>
Looking in indexes: https://pypi.org/simple, https://data:****@pypi.<company>.com/simple/
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'))': <package name>
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'))': <package name>
@Steve_Tauber 的回答 pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
帮助我完成了部分工作。
我能够使用现有的证书文件成功安装软件包,如下所示:
pip install --cert /Users/me/opt/anaconda3/ssl/cert.pem --upgrade pip
但是我不想每次想使用 pip 时都必须使用 cert 标志...
答案是更新环境变量:
CERT_PATH=/Users/me/opt/anaconda3/ssl/cert.pem
export SSL_CERT_FILE=${CERT_PATH}
export REQUESTS_CA_BUNDLE=${CERT_PATH}
现在我可以毫无问题地安装了。
答案 35 :(得分:0)
我对 pip 21.0.1
有这个问题,但没有一个答案对我有用。有些人通过降级pip版本解决了这个问题。
如果在 2021 年您仍然遇到此问题,我确实降级到 pip 20.2.4
,现在它可以工作了。
答案 36 :(得分:0)
对我来说,没有一种建议的方法有效 - 使用cert,HTTP,trusted-host。
在我的情况下切换到不同版本的软件包(在本例中为paho-mqtt 1.3.1而不是paho-mqtt 1.3.0)。
看起来问题特定于该软件包版本。
答案 37 :(得分:0)
在我的情况下,我在最小的阿尔卑斯山码头图像中运行Python。它缺少根CA证书。修正:
apk update && apk add ca-certificates
答案 38 :(得分:0)
或者,如果没有任何效果(就像我的情况),您可以在此处恢复搜索和下载 whl 文件:
https://pypi.org/project/fileDownloader.py/
在使用不再需要任何证书的下载文件通过 pip 安装之前:
python3.7 -m pip install Myfile.whl
答案 39 :(得分:0)
我不确定这是否相关,但是我有一个类似的问题,可以通过将这些文件从Anaconda3 / Library / bin复制到Anaconda3 / DLLs来解决:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
答案 40 :(得分:0)
如果您正在使用Anaconda并仅在环境中运行pip时才遇到此问题,则可能需要重新安装python。
在所需的环境中运行conda install python
。
答案 41 :(得分:0)
截至目前,当pip已升级到10时,现在他们已将路径从pypi.python.org更改为files.pythonhosted.org 请将命令更新为pip --trusted-host files.pythonhosted.org install python_package
答案 42 :(得分:0)
如果您使用make
手动安装了Python,则必须遵循以下答案:https://stackoverflow.com/a/42798679/6403406才能使其正常工作。
答案 43 :(得分:0)
简短答案
如果在公司计算机上在家中遇到此问题,请在工作中重试。
详细信息
我在周末遇到了这个。点和conda均损坏,无法安装或更新。 SO很有帮助,但是在公司机器上有许多答案是有问题的-解决方案要求具有点子安装的能力(已经不起作用)或需要下载安装程序(防火墙设置禁止我要下载的安装程序)。
对我有用的是当我在取证时再次尝试。这工作了。事实证明,在家中和在办公室使用计算机时,企业防火墙设置都是不同的。
答案 44 :(得分:0)
我遇到了类似的问题。对我有用的解决方案 1)卸载python 2.7 2)删除python27文件夹 3)重新安装最新的python
答案 45 :(得分:0)
在我的情况下,这是由于SSL证书是由公司内部CA签署的。使用pip --cert
之类的变通办法并没有帮助,但是以下程序包确实起作用:
pip install pip_system_certs
请参阅:https://pypi.org/project/pip-system-certs/
该软件包修补pip并在运行时请求使用默认系统存储中的证书(而不是捆绑的证书ca)。
这将允许pip验证与您的系统安装受信任的证书的服务器的tls / ssl连接。
答案 46 :(得分:-2)
如果您使用的是虚拟环境,我建议您使用此解决方案,
pyenv install (wanted_python_version)