「pip install --cert」を使用して回避できますか?


21

職場でパッケージをインストールしているときに--certフラグを使用してpipを回避する方法があるかどうかを把握しようとしています。プロキシには、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/...私はポリシーが凝集など何のためにあるのかわからないんだけど...
ライアン

回答:


9

あなたにはあるピップ設定ファイルを介して、それを設定することができ$HOME/.pip/pip.confたり%APPDATA%\pip\pip.ini、Windows上で:

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

このファイルを使用すると、基本的にpipで使用されるすべてのフラグを設定できます。完全なドキュメントはhttps://pip.pypa.io/en/latest/user_guide/#configurationにあります


2
私の元の投稿に対するあなたのコメントは本当の答えにつながると思います。それは、pipはシステム証明書を使用しないということです。これは優れたソリューションですが、職場環境と自宅環境を(VPNを介して)切り替えるときに問題が発生します。ただし、ソリューションよりも証明書に関する問題が多くあります。
イアン・リー

1
設定に更新されたリンク:pip.pypa.io/en/latest/user_guide.html#configuration
セコイア

5

私にとっては、config-fileの回避策は機能しませんでした。私が使用していピップ1.5.4をのUbuntu 14.04

最終的に私のために働いたのは、最初にシステムに証明書をインストールすることです(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に投稿しています(「上記の最終的に重複するリンク」と同じ回答ですが、最初は他の(最終的に重複する回答)が見つかりませんでした...これが役立つかもしれません。

たぶん私は同じ答えを2回投稿するためにある種のルールを破っています。1つはSOともう1つはスーパーユーザーです。もしそうなら、それについて申し訳ありません。


2

これは、構成ファイルの場所を知る必要なく、私にとってはうまくいきました:

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

pipバージョン10以降が必要だと思います。

 python -m pip --version

config setコマンドの出力は、便宜上、構成ファイルの名前を出力します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.