Jer*_*ook 354 python windows ssl pip
我是Python的新手,并试图> pip install linkchecker在Windows 7上.一些说明:
> pip install scrapy也会导致SSL错误.python而pip直到我安装3.4.1中不具备的命令行.> pip search linkchecker作品.也许这是因为pip搜索不会验证网站的SSL证书.以下是运行后我的pip.log的内容pip install linkchecker:
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
Run Code Online (Sandbox Code Playgroud)
Vau*_*ein 566
您可以通过设置pypi.org和files.pythonhosted.org作为可信主机来忽略SSL错误.
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
Run Code Online (Sandbox Code Playgroud)
注意:在2018年4月的某个时间,Python Package Index已迁移pypi.python.org到pypi.org.这意味着使用旧域的"trusted-host"命令不再起作用.
自从pip 10.0发布以来,你应该能够通过pip自我升级来永久修复它:
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
Run Code Online (Sandbox Code Playgroud)
或者只是重新安装它以获得最新版本:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Run Code Online (Sandbox Code Playgroud)
(...然后get-pip.py使用相关的Python解释器运行).
pip install <otherpackage>应该在此之后工作.如果没有,那么您将需要做更多,如下所述.
您可能希望将可信主机和代理添加到配置文件中.
pip.ini(Windows)或pip.conf(unix)
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
替代解决方案(不太安全)
大多数答案可能会带来安全问题.
有助于轻松安装大多数python包的两个解决方法是:
easy_install <package_name>.请注意,找不到某些包或会出现小错误.pip install wheel_package_name.whl安装包.Ste*_*ber 113
您可以使用此参数指定证书:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
Run Code Online (Sandbox Code Playgroud)
请参阅:文档»参考指南»pip
如果指定您公司的根证书不起作用,则cURL可能会起作用:http://curl.haxx.se/ca/cacert.pem
您必须使用PEM文件而不是CRT文件.如果你有一个CRT文件,你需要将文件转换为PEM.评论中有报告说这现在适用于CRT文件,但我还没有验证.
另请检查:SSL证书验证.
plh*_*lhn 61
kenorb的回答非常有用(太棒了!).
在他的解决方案中,也许这是最简单的解决方案:
--trusted-host
例如,在这种情况下,您可以这样做
pip install --trusted-host pypi.python.org linkchecker
Run Code Online (Sandbox Code Playgroud)
pem文件(或其他任何东西)是不必要的.
use*_*238 41
对我来说,问题的解决,创建一个文件夹
pip,一个文件:pip.ini
在
C:\Users\<username>\AppData\Roaming\
例如:
C:\Users\<username>\AppData\Roaming\pip\pip.ini
Run Code Online (Sandbox Code Playgroud)
在里面我写道:
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
我重新启动了python,然后pip永久信任这些网站,并用它们从中下载包.
Koj*_*nte 32
答案非常相似,有点令人困惑.就我而言,我公司网络中的证书就是问题所在.我能够使用以下方法解决问题:
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
Run Code Online (Sandbox Code Playgroud)
如此处所见.如果不需要详细输出,则可以省略-vvv参数
Mes*_*Qin 31
我尝试了这个答案博客中提供的大多数解决方案,但是它们都不起作用,我在ssl certificant error尝试安装 python 包时遇到了这个问题。
我通过以下命令成功:
python -m pip install PACKAGENAME --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
chn*_*rxn 23
我发现最直接的方法是从DigiCert下载并使用"DigiCert High Assurance EV Root CA",网址为https://www.digicert.com/digicert-root-certificates.htm#roots
您可以访问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
Run Code Online (Sandbox Code Playgroud)
证书链中的最后一个CN值是您需要下载的CA的名称.
对于一次性工作,请执行以下操作:
(在运行pip之前,最后一行假定您使用的是bash shell).
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
Run Code Online (Sandbox Code Playgroud)
为了使其可重复使用,将DigiCertHighAssuranceEVRootCA.crt置于常用位置,并在〜/ .bashrc中相应地导出PIP_CERT.
Dev*_*rma 23
永久修复
pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
例如:
pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
Ale*_*tin 22
要一劳永逸地解决此问题,您可以验证您是否有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
Run Code Online (Sandbox Code Playgroud)
pip install linkcheckerlinkchecker我创建pip.conf文件后没有抱怨安装.
ken*_*orb 17
您有以下可能性来解决问题CERTIFICATE_VERIFY_FAILED:
使用--cert <trusted.pem>或CA_BUNDLE变量指定备用CA包.
例如,您可以从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证书验证).--proxy <proxy>以避免证书检查.阅读更多信息:套接字对象的TLS/SSL包装器 - 验证证书.
Tho*_*gdt 14
Mabey我回答得有点迟了
对我而言,我的日期和时间在Raspberry Pi上配置错误.结果是所有SSL和HTTPS连接都失败了,使用https://files.pythonhosted.org/服务器.
像这样更新它:
sudo date -s "Wed Thu 23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata
Run Code Online (Sandbox Code Playgroud)
nir*_*019 14
由于与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
Run Code Online (Sandbox Code Playgroud)
Ros*_*les 11
我最近遇到了这个问题,因为我公司的Web内容过滤器使用自己的证书颁发机构,因此它可以过滤SSL流量.在我的情况下,PIP似乎没有使用系统的CA证书,产生您提到的错误.将PIP降级到版本1.2.1后面会出现一系列问题,所以我回到了Python 3.4附带的原始版本.
我的解决方法很简单:使用easy_install.要么它不检查证书(如旧的PIP版本),要么它知道使用系统证书,因为它每次都适用于我,我仍然可以使用PIP卸载使用easy_install安装的软件包.
如果这不起作用并且您可以访问没有问题的网络或计算机,您可以随时设置自己的个人PyPI服务器:如何在没有镜像的情况下创建本地自己的pypi存储库索引?
我几乎这样做,直到我尝试使用easy_install作为最后的努力.
小智 11
域名注册地址:
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
Run Code Online (Sandbox Code Playgroud)
因此,已经有 30 多个问题的答案,但在 2020 年 6 月(在锁定期间)对我没有任何帮助。
所有这些都是在过去的不同时刻给出的。我会努力让这个答案在未来的任何时候都有效。问题是当 pip 安装包时,它会尝试与存储包的主机 URL 连接,并且在下载时不信任该 URL。
我们有两种方法可以解决这个问题: 简单且不安全: 1. 检查 pip 命中哪个 URL 以下载包。
pip install <packageName> -vvv
Run Code Online (Sandbox Code Playgroud)
如果你仔细检查输出,你会发现它可能会转到像 pypi.org 这样的 URL 或者可能是 pypi.python.org。
如果是,只需在命令中添加受信任的主机选项,如下所示:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv
Run Code Online (Sandbox Code Playgroud)
或者如果您正在使用需求文件:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv
Run Code Online (Sandbox Code Playgroud)
安全方式:
转到每个 URL 并下载它们的公共证书(只需 google 如何下载),创建一个链,将其存储为 .pem 文件并运行以下命令:
pip --cert YourPemFile.pem install <packageName>
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用http而不是https来绕过SSL错误.当然,这在安全性方面并不是最优的,但是如果你赶时间应该可以做到这一点:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
Run Code Online (Sandbox Code Playgroud)
使用的答案
pip install --trusted-host pypi.python.org <package>
Run Code Online (Sandbox Code Playgroud)
工作.但是你必须检查是否有重定向或缓存pip.在Windows 7上pip 9.0.1,我不得不运行
pip install \
--trusted-host pypi.python.org \
--trusted-host pypi.org \
--trusted-host files.pythonhosted.org \
<package>
Run Code Online (Sandbox Code Playgroud)
您可以使用详细标记找到这些.
对于Python 3.10
添加/更新文件内容
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
文件位置
MacOS - $HOME/Library/Application Support/pip/pip.conf
Unix - $HOME/.config/pip/pip.conf
Windows - %APPDATA%\pip\pip.ini
小智 7
我使用easy_install安装了pip 1.2.1并升级到最新版本的pip(当时为6.0.7),它可以在我的情况下安装软件包.
easy_install pip==1.2.1
pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)
你有4个选择:
$ pip install --cert /path/to/mycertificate.crt linkchecker
Run Code Online (Sandbox Code Playgroud)
pip.conf创建此文件:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
Run Code Online (Sandbox Code Playgroud)
并添加以下行:
[global]
cert = /path/to/mycertificate.crt
Run Code Online (Sandbox Code Playgroud)
$ pip install --trusted-host pypi.python.org linkchecker
Run Code Online (Sandbox Code Playgroud)
创建此文件:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
Run Code Online (Sandbox Code Playgroud)
并添加以下行:
[global]
trusted-host = pypi.python.org
Run Code Online (Sandbox Code Playgroud)
小智 7
我尝试使用公司代理但失败了。
我在用着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
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到新创建的.conf文件中,然后保存。
[global]
trusted-host = pypi.python.org files.pythonhosted.org pypi.org pypi.io
Run Code Online (Sandbox Code Playgroud)
一切都完成了,它开始工作了。
小智 6
在我使用 --verbose 选项看到它想要访问 files.pythonhosted.org 而不是 pypi.python.org 之前,此页面上的任何内容都对我不起作用:
pip install --trusted-host files.pythonhosted.org <package_name>
Run Code Online (Sandbox Code Playgroud)
因此,请通过 --verbose 选项检查实际失败的 URL。
就我而言,这是由于 SSL 证书是由我公司的内部 CA 签署的。使用类似的解决方法pip --cert没有帮助,但以下包有帮助:
pip install pip_system_certs\nRun Code Online (Sandbox Code Playgroud)\n请参阅: https: //pypi.org/project/pip-system-certs/
\n\n\n该软件包修补 pip 并在运行时请求使用默认系统存储中的证书(而不是捆绑的证书 ca)。
\n这将允许 pip 验证与您的系统安装信任\xe2\x80\x99s 证书的服务器的 tls/ssl 连接。
\n
pip install ftputil在 64 位 Windows 7 Enterprise 上尝试使用 ActivePython 2.7.8、ActivePython 3.4.1 和“库存”Python 3.4.2 时遇到了同样的问题。所有尝试都失败,并出现与 OP 相同的错误。
通过降级到 pip 1.2.1 解决了 Python 3.4.2 的问题:(easy_install pip==1.2.1参见/sf/answers/1145951201/)。同样的修复也适用于 ActivePython 2.7.8。
该漏洞于 2013 年 3 月报告,目前仍处于开放状态:https : //github.com/pypa/pip/issues/829。
一种解决方案(对于 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
Run Code Online (Sandbox Code Playgroud)
...然后我们可以执行安装指令:
pip3 install PyQt5
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用代理和证书的参数安装包...
$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
--cert C:/certs/python_root.pem PyQt5
Run Code Online (Sandbox Code Playgroud)
要将证书*.cer文件转换为所需的*.pem格式,请执行以下指令:
$ openssl x509 -inform der -in python_root.cer -out python_root.pem
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助!
首先,
pip install --trusted-host pypi.python.org <package name>
Run Code Online (Sandbox Code Playgroud)
不适合我.我一直收到CERTIFICATE_VERIFY_FAILED错误.但是,我在错误消息中注意到他们引用了"pypi.org"网站.所以,我使用它作为可信主机名而不是pypi.python.org.那几乎让我在那里; 使用CERTIFICATE_VERIFY_FAILED,负载仍然失败,但稍后.找到对失败的网站的引用,我将其作为可信主机包含在内.最终对我有用的是:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
Run Code Online (Sandbox Code Playgroud)
我不确定这是否相关,但我有一个类似的问题,通过将这些文件从 Anaconda3/Library/bin 复制到 Anaconda3/DLLs 来解决这个问题:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
简短的解决方案:
easy_install <package name>
Run Code Online (Sandbox Code Playgroud)
例如:
easy_install pandas
Run Code Online (Sandbox Code Playgroud)
替代解决方案:
pip install <package_name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
例子:
pip install pandas --trusted-host pypi.org --trusted-host files.pythonhosted.org
Run Code Online (Sandbox Code Playgroud)
添加pypi.org到受信任站点的所有解决方案--trusted-host都不安全,基本上跳过https,并没有真正解决问题。
每个使用这种方法的人,请尝试以这种方式更新您的证书并删除--trusted-host标志:
sudo yum -y update ca-certificates
export PIP_CERT=/etc/ssl/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665061 次 |
| 最近记录: |