<エラー内容> ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/7b/60/9afac4fd6feee0ac09339de4101ee452ea643d26e9ce44c7708a0023f503/openpyxl-3.0.10-py2.py3-none-any.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))
shimada.kumiさんの投稿
(投稿ID: 5286)
動画に倣い、pip install openpyxl と記載したところ、エラーになりインストールできませんでした。
(会社のPCを使用しているため、信頼できないネットワーク→エラーとなっているのかと思いました。)
<エラー内容>
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/7b/60/9afac4fd6feee0ac09339de4101ee452ea643d26e9ce44c7708a0023f503/openpyxl-3.0.10-py2.py3-none-any.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))
ググって(*)、以下コードを実行した後に、再度インストールを試みたものの、エラーは解消されませんでした。
恐縮ですが、助言いただくことは可能でしょうか。
(venv) PS C:\Users\XXXX\python\mypython\myproject1> python -m pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org --upgrade pip
(*)https://qiita.com/kekosh/items/e96e822bf9cb6ca1aff8
小川 慶一さんのコメント
(コメントID: 7499)
いろいろ試してみたいです。
まずは、以下を実行してみてもらえますでしょうか。
pip install --trusted-host pypi.org openpyxl
小川 慶一さんのコメント
(コメントID: 7500)
pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org openpyxl
結果をお知らせいただければと思います。
shimada.kumiさんのコメント
(コメントID: 7501)
① pip install --trusted-host pypi.org openpyxl
→ 同様のエラーが出たまま進まず
② pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org openpyxl
→ うまくいきました!!!
「pip install 条件 目的語」みたいな形のコードですね、
大変助かりました。ありがとうございます!
小川 慶一さんのコメント
(コメントID: 7502)
追って、どこかのタイミングでこの件の解説動画を用意したいと思います。
小川 慶一さんのコメント
(コメントID: 7513)
pip --help とすると、 pip のオプションのリストが出力されます。
その中に --trusted-host についての情報もあります。
以下に引用します。
--trusted-host <hostname> Mark this host or host:port pair as trusted, even though it does not have valid or any HTTPS.
要は、「接続先のサーバが本物かどうかのチェックを行わない」ということです。
メリットは、今回のように社内LAN等から pypi.python.org 等のサーバに接続するときに失敗する可能性が経ることです。
デメリットは、「pypi.python.org」を騙るインチキサーバに接続してしまったとしてもそれを見抜けなくなるということです。(とはいえ、かなりキアイを入れて仕込まれた騙りでないとそんなことはそうとう起こりませんが)
以上の説明で、なんとなく雰囲気掴めたでしょうか。
① でうまくいかなかったのは、 pypi.org についてはチェックを省略したけど、 pypi.python.org , files.pythonhosted.org についてまではチェック省略しなかったからです。
② では、 pip コマンド実行の結果接続するすべてのサーバについてチェック省略したので成功しました。