我可以使用“ pip install --cert”解决问题吗?


21

尝试找出是否有一种方法可以避免在工作时安装软件包时使用--cert标志。代理存在一些问题,尽管将mycert.crt文件添加到/usr/local/share/ca-certificates并正在运行,但我仅在提供该标志时才允许我下载所需的软件包sudo update-ca-certificates

我看到的消息示例是:

$ pip install "virtualenv>=1.10.1"
Downloading/unpacking virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/ when looking for download links for virtualenv>=1.10.1
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not find any downloads that satisfy the requirement virtualenv>=1.10.1
Cleaning up...
No distributions at all found for virtualenv>=1.10.1
Storing complete log in /tmp/tmpwW5qXD

可以使用以下方法解决:

pip install --cert=/usr/local/share/ca-certificates/mycert.crt

但是,我希望不必这样做(因为我敢肯定其他应用程序也会遇到此问题)。

我正在运行Linux Mint 15(尽管以前在Ubuntu 12.04上有非常类似的问题),pip版本1.4.1。


这可能是这一个潜在的重复stackoverflow.com/questions/19377045/... ..我不知道该政策是聚集等什么
瑞恩

Answers:


9

您可以通过Windows $HOME/.pip/pip.conf%APPDATA%\pip\pip.iniWindows中的pip配置文件进行设置:

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

该文件使您可以设置pip基本上使用的所有标志。完整文档位于https://pip.pypa.io/en/latest/user_guide/#configuration


2
我认为您对我的原始帖子的评论导致了真正的答案,那就是pip不使用系统证书。这是一个很好的解决方案,尽管当我在工作和家庭环境(通过VPN)之间切换时会遇到问题。证书问题比解决方案更多。
伊恩·李


5

对我来说,没有配置文件的解决方法。我在Ubuntu 14.04上使用pip 1.5.4

最终对我有用的是首先在系统上安装证书(对我来说,在ubuntu上是这样)

sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

之前的版本会自动更新捆绑文件(检查/etc/ssl/certs/ca-certificates.crt您的底部现在应该看到与中相同的证书my_cert.crt

现在在中使用该路径PIP_CERT。并将其添加到我的.bashrc

echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc

免责声明:我已经在SO中发布了此答案(与“最终复制的链接”中的答案相同),但是一开始我没有找到其他(最终复制的答案)...因此,如果像我这样的人先来,那么这可能会有所帮助。

也许我违反某种规则来两次发布相同的答案,一个发布在SO中,另一个发布在超级用户中。如果是这样,对此感到抱歉。


2

这对我有用,而无需知道配置文件在哪里:

python -m pip config set global.cert C:\\Path\\cert.crt

我相信您需要的pip版本为10+,可以通过以下方式找到:

 python -m pip --version

config set命令的输出然后输出配置文件的名称,以方便您使用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.