ssl 无法安装软件包,因为出现EnvironmentError:找不到合适的TLS CA证书包,路径无效

gijlo24d  于 12个月前  发布在  其他
关注(0)|答案(7)|浏览(276)

我得到这个错误:
无法安装软件包,因为出现EnvironmentError:找不到合适的TLS CA证书捆绑包,路径无效:/home/yosra/Desktop/CERT.RSA
当我运行时:$ virtualenv venv
所以我在桌面上随机放置了一个CERT.RSA,它可以工作,我创建了我的虚拟环境,但是当我运行时:pip install -r requirements.txt
我得到了这个:
无法安装软件包,因为出现EnvironmentError:HTTPSConnectionPool(host ='github.com',port=443):URL超过最大重试次数:/KristianOellegaard/django-hvad/archive/2.0.0-beta.tar.gz(由于SSLError(SSLError(0,'unknown error(_ssl.c:3715)'),))
我觉得这两个错误是相互联系的,但我想知道如何修复第一个错误?

tvmytwxo

tvmytwxo1#

如果你使用的是Mac(我的是10.13.6),请使用以下命令:

(security find-certificate -a -p ls /System/Library/Keychains/SystemRootCertificates.keychain &&        security find-certificate -a -p ls /Library/Keychains/System.keychain) > $HOME/.mac-ca-roots

然后修改.bashrc

export REQUESTS_CA_BUNDLE="$HOME/.mac-ca-roots"

然后做

$ source ~/.bashrc
2nc8po8w

2nc8po8w2#

在Windows 10中,1.使用以下命令查找certifici的位置以检查是否已安装

import certifi
certifi.where()

1.记下cacert.pem文件的路径
1.在windows资源管理器中搜索pip.ini文件,在记事本中编辑该文件,并将path = <file path of cacert.pem >

svgewumm

svgewumm3#

您需要允许pip引用正确的证书。先检查证件;

python -c "import certifi; print(certifi.where())"

然后先手动测试;

pip install -r requirements.txt --cert=<the above certificate path>

如果运行正常,请更新位于$HOME/.pip/pip.conf(或Windows上的%APPDATA%\pip\pip.ini)的pip.conf文件上的此路径。例如

[global]
cert = /usr/local/share/ca-certificate/mycert.crt
r8uurelv

r8uurelv4#

我在Pycharm中运行命令“pip install flask”时收到此错误。
如果您查看错误,您将看到错误指向“packages due to an EnvironmentError: Could not find a suitable TLS CA certificate bundle -- Invalid path“。
我通过删除环境变量“REQUESTS_CA_BUNDLE“解决了这个问题,或者你可以把环境变量“REQUESTS_CA_BUNDLE“的名字改为其他的名字。
重新启动Pycharm,这个问题就可以解决了。
谢谢你,谢谢!

liwlm1x9

liwlm1x95#

修复Windows 10,
面临的错误:error: could not install packages due to an oserror: could not find a suitable tls ca certificate bundle, invalid path: c:\program files\postgresql\16\ssl\certs\ca-bundle.crt。在使用pip安装新软件包时遇到。
原因:postgresql安装不知何故更新了系统环境变量。
两步修复(对我有效):
1.使用Python311\Lib\site-packages\pip\_vendor\certifi\cacert.pem中存在的cacert.pem路径更新系统环境CURL_CA_BUNDLE变量。注意添加完整路径,在我的示例中为C:\Program Files\Python311\Lib\site-packages\pip\_vendor\certifi\cacert.pem
1.重新启动电脑

bvjveswy

bvjveswy6#

老帖子。但回答我未来的自我和任何人谁得到卡在这!
首先找到pip.conf(Linux):

[root@localhost ~]# pip3 config -v list
For variant 'global', will try loading '/etc/xdg/pip/pip.conf'
For variant 'global', will try loading '/etc/pip.conf'
For variant 'user', will try loading '/root/.pip/pip.conf'
For variant 'user', will try loading '/root/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/pip.conf'

如果pip. conf文件尚未存在,那么您可以在这些位置中的任何一个位置创建pip.conf文件(这对虚拟环境也有效)。参考https://pip.pypa.io/en/stable/cli/pip_config/#cmdoption-user了解变体规范。
然后将下面的源代码添加到pip.conf文件中:

trusted-host = pypi.org
               pypi.python.org
               pypi.org
               pypi.co
               files.pythonhosted.org
               pip.pypa.io

保存,并开始与pip安装或下载像往常一样..
要找到cert,请安装certifici并运行以下代码:

[root@localhost ~]# python3 -c "import certifi; print(certifi.where())"
/usr/local/lib/python3.6/site-packages/certifi/cacert.pem
fhg3lkii

fhg3lkii7#

我们经常会遇到各种各样的“git”行为。我们有自己的CA +中介,我们没有定制我们的软件安装足以适应这一事实。
我们的一般修复是通过连接或替换使用CA证书pems更新您的ca-bundle.crt
例如cat my_cert_chain.pem >> $(python -c "import certifi; print(certifi.where())")
如果你有一个/etc/pki/tls/certs目录,这很好用,但是对于python,python -c "import certifi; print(certifi.where())"告诉你python的ca-configure.crt文件的位置。
虽然这不是一个纯粹的python答案,因为我们没有添加新的文件/路径,但当你理解了潜在的问题时,它解决了很多其他软件的其他证书问题。
我建议在这种情况下连接,因为我不知道该文件还用于vis-a-vis pypi。

相关问题