web-dev-qa-db-ja.com

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

職場でパッケージをインストールしているときに、-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です。

22
Ian Lee

これは、Windowsの$HOME/.pip/pip.confまたは%APPDATA%\pip\pip.iniにあるpip構成ファイルを使用して設定できます。

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

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

9
Ryan

私にとって、config-fileの回避策はどれも機能しませんでした。 pip 1.5.4 on buntu 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

[〜#〜] disclaimer [〜#〜]:私はすでにこの回答をSOに投稿しました(「上記の最終的に複製されたリンク」と同じ回答ですが、最初に私は他の(最終的には重複する回答)が見つかりませんでした...私のような誰かが最初にここに来た場合、これが役立つかもしれません。

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

5
andzep

これは、設定ファイルがどこにあるかを知る必要なく私にとってはうまくいきました:

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

私はあなたがあなたが見つけることができるpipバージョン10+が必要だと信じています:

 python -m pip --version

次に、config setコマンドの出力により、利便性のために構成ファイルの名前が出力されます。

2
avatarofhope2