職場でパッケージをインストールしているときに、-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です。
これは、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 にあります
私にとって、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つはスーパーユーザーに投稿します。もしそうなら、それについて申し訳ありません。
これは、設定ファイルがどこにあるかを知る必要なく私にとってはうまくいきました:
python -m pip config set global.cert C:\\Path\\cert.crt
私はあなたがあなたが見つけることができるpipバージョン10+が必要だと信じています:
python -m pip --version
次に、config setコマンドの出力により、利便性のために構成ファイルの名前が出力されます。