pip install fails with "接続エラー:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)";
私はPythonの初心者で、Windows 7に > pip install linkchecker
をインストールしようとしています。いくつかのメモ:
- pip install はどのパッケージでも失敗します。例えば、
> pip install scrapy
もSSLエラーになります。 - Python3.4.1のバニラインストールにはpip1.5.6が含まれていました。最初にやろうとしたのはlinkcheckerのインストールだった。Python2.7はすでにインストールされていた。3.4.1をインストールするまで、
python
とpip
はコマンドラインから利用できなかった。 - pip search linkchecker` は動作する。おそらく、pip searchがサイトのSSL証明書を検証しないためだと思います。
- 私は会社のネットワークにいますが、インターネットにアクセスするためにプロキシを経由していません。
- 各会社のコンピューター(私のコンピューターも含む)には、https://google.com、TLSトラフィックを監視できるようにするなど、さまざまな理由で使用される信頼されたルート認証局があります。それが関係しているかどうかはわかりません。
以下は、pip install linkchecker
を実行した後のpip.logの内容です:
Downloading/unpacking linkchecker
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Getting page https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
Cannot fetch index base URL https://pypi.python.org/simple/
URLs to search for versions for linkchecker:
* https://pypi.python.org/simple/linkchecker/
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
350
20
pypi.org
およびfiles.pythonhosted.org
を信頼ホストとして設定することにより、SSLエラーを無視できます。注:2018年4月中に、Pythonパッケージインデックスが
pypi.python.org
からpypi.org
に移行されました。 これは、古いドメインを使用する「trusted-host」コマンドが機能しなくなったことを意味します。恒久的な修正。
pip 10.0のリリース以降、「pip」自体をアップグレードするだけで、これを永続的に修正できるはずです。
または、再インストールだけで最新バージョンを入手できます。
(... そして、関連するPythonインタープリターで
get-pip.py
を実行します)。pip install< otherpackage>
はこの後に動作するはずです。 そうでない場合は、以下で説明するように、さらに多くのことを行う必要があります。---。
[信頼できるホストとプロキシを構成ファイルに追加][3]を使用できます。
pip.ini
(Windows)またはpip.conf
(unix)。----------。
代替ソリューション(安全性が低い)。
回答のほとんどはセキュリティの問題を引き起こす可能性があります。
ほとんどのpythonパッケージを簡単にインストールするのに役立つ2つの回避策は次のとおりです。
- easy_installの使用:本当に怠惰で時間を無駄にしたくない場合は、
easy_install< package_name>
を使用します。 一部のパッケージが見つからないか、小さなエラーが発生することに注意してください。 - Wheelの使用:Pythonパッケージのホイールをダウンロードし、pipコマンドpip install wheel_package_name.whl
を使用してパッケージをインストールします。[3]:https://pip.pypa.io/en/stable/user_guide/?highlight = appdata#config-file。
このパラメータで証明書を指定できる:
を参照してください:ドキュメント » リファレンスガイド » pip を参照してください。
あなたの会社のルート証明書を指定してもうまくいかない場合は、cURLの証明書を指定するとうまくいくかもしれません: http://curl.haxx.se/ca/cacert.pem
CRTファイルではなく、PEMファイルを使用する必要があります。もしCRTファイルをお持ちなら、ファイルをPEMに変換するコメント欄にCRTファイルで動作するようになったという報告がありますが、私は検証していません。
また、確認してください:SSL証明書の検証も確認してください。
ケノーブの答えは非常に役立ちます(そして素晴らしいです。!)。
彼の解決策の中で、おそらくこれが最も単純なものです。
--trusted-host
。たとえば、この場合はできます。
pemファイル(またはその他のもの)は不要です。
私にとっての問題は、フォルダを作成することで修正されました。
pip
、ファイル付き:pip.ini
。 に。C:\ Users \< username> \ AppData \ Roaming \
。 例えば:その中に私は書いた:
Pythonを再起動し、pipがこれらのサイトを永続的に信頼し、それらを使用してパッケージをダウンロードしました。
WindowsでAppDataフォルダが見つからない場合は、ファイルエクスプローラに「%appdata%」と書き込むと、表示されるはずです。
答えは非常に似ており、少し混乱しています。 私の場合、私の会社のネットワークの証明書が問題でした。 私は以下を使用して問題を回避することができました。
ここに見られるように。 冗長出力が不要な場合は、-vvv引数を省略できます。
私が見つけた最も簡単な方法は、DigiCertのhttps://www.digicert.com/digicert-root-certificates.htm#rootsから「DigiCert High Assurance EV Root CA」をダウンロードして使用することです。
https://pypi.python.org/にアクセスして、アドレスバーのロックアイコンをクリックして証明書発行者を確認するか、opensslを使用してオタクの信用を増やすことができます。
証明書チェーンの最後のCN値は、ダウンロードする必要があるCAの名前です。
1回限りの作業については、次の操作を行います。
1。 DigiCertからCRTをダウンロードします。 2。 CRTをPEM形式に変換します。 3。 PIP_CERT環境変数をPEMファイルのパスにエクスポートします。
(最後の行は、bashシェルを使用していることを前提としています)pipを実行する前に。
これを再利用できるようにするには、DigiCertHighAssuranceEVRootCA.crtを共通の場所に置き、それに応じて〜/ .bashrcにPIP_CERTをエクスポートします。
恒久的な修正。
例:
この問題を一度に解決するには、「pip.conf」ファイルがあることを確認できます。
ドキュメントによると、これは
pip.conf
があるべき場所です。virtualenv内:。
pip.conf
は次のようになります。pip.conf
ファイルを作成した後、pip install linkchecker
が文句なしにインストールされました。CERTIFICATE_VERIFY_FAILED
の問題を解決するには、次の可能性があります。-HTTPSの代わりにHTTPを使用します。 -
--cert< trusted.pem>
またはCA_BUNDLE
変数を使用して、代替CAバンドルを指定します。例えば。 Webブラウザーから失敗したURLに移動し、ルート証明書をシステムにインポートできます。
-
python -c "import ssl; print(ssl.get_default_verify_paths())"
を実行して、現在のものを確認します(存在する場合は検証します)。 -OpenSSLには、さまざまな証明書データベースを指定するために使用できる環境のペア(SSL_CERT_DIR
、SSL_CERT_FILE
)があります PEP-476< / sup>。 ---trusted-host< hostname>
を使用して、ホストを信頼済みとしてマークします。 -Pythonでは、「requests.get」に「verify = False」を使用します(SSL Cert Verificationを参照)。 -証明書チェックを避けるために、--proxy< proxy>
を使用します。続きを読む:ソケットオブジェクトのTLS / SSLラッパー-証明書の検証。
時刻と日付を正しく設定します。!
私にとって、私の日付と時刻がRaspberry Piで誤って構成されていることがわかりました。 その結果、https://files.pythonhosted.org/サーバーを使用して、すべてのSSLおよびHTTPS接続が失敗しました。
このように更新します。
最近、SSLトラフィックをフィルタリングできるように独自の認証局を使用する会社のWebコンテンツフィルターが原因で、この問題に遭遇しました。 私の場合、PIPはシステムのCA証明書を使用していないようで、あなたが言及したエラーを生成します。 PIPをバージョン1.2.1にダウングレードすると、独自の一連の問題が後で発生するため、Python 3.4に付属の元のバージョンに戻りました。
私の回避策は非常に簡単です。
easy_install< / code>を使用します。 (古いPIPバージョンのような)証明書をチェックしないか、システム証明書を使用することがわかっています。これは、毎回機能し、PIPを使用してeasy_installでインストールされたパッケージをアンインストールできるためです。
それが機能せず、問題のないネットワークまたはコンピューターにアクセスできる場合は、いつでも独自のPyPIサーバーをセットアップできます。https://stackoverflow.com/questions/18052217/how-to -create-local-own-pypi-repository-index-without-mirror。
easy_install< / code>を使用しようとするまで、ほとんどそれを行いました。最後の溝の努力として。
httpsの代わりにhttpを使用することで、SSLエラーを回避することができます。もちろん、これはセキュリティの点では最適ではありませんが、急いでいる場合は、トリックを行う必要があります:
使用する答え。
作業。 ただし、リダイレクトがあるか、キャッシュが「pip」がヒットしているかどうかを確認する必要があります。 「pip 9.0.1」のWindows 7では、実行する必要がありました。
これらは、冗長フラグで見つけることができます。
4つのオプションがあります。
パラメータとして証明書を使用します。
pip.conf
で証明書を使用する。このファイルを作成:
そしてこれらの行を追加します。
証明書を無視してHTTPを使用します。
証明書を無視し、pip.confでHTTPを使用します。
このファイルを作成:
そしてこれらの行を追加します。
ソース。
-https://pip.pypa.io/en/latest/user_guide/#configuration。
easy_installを使用してpip 1.2.1をインストールし、私の場合にパッケージをインストールできる最新バージョンのpip(当時は6.0.7)にアップグレードしました。
まず、。
私にはうまくいきませんでした。 CERTIFICATE_VERIFY_FAILEDエラーを取得し続けました。 しかし、エラーメッセージで「pypi.org」サイトを参照していることに気づきました。 したがって、これをpypi.python.orgの代わりに信頼できるホスト名として使用しました。 それで私はほとんどそこにたどり着きました。 CERTIFICATE_VERIFY_FAILEDではまだ負荷がかかりませんでしたが、後で。 失敗していたウェブサイトへの参照を見つけて、私はそれを信頼できるホストとして含めました。 最終的に私のために働いたのは:
ActivePython 2.7.8、ActivePython 3.4.1、および64ビットWindows 7 Enterpriseの「ストック」Python 3.4.2で「pip install ftputil」を試すのと同じ問題がありました。 すべての試行はOPと同じエラーで失敗しました。
Python 3.4.2の問題をpip 1.2.1にダウングレードすることで回避しました:
easy_install pip == 1.2.1
(https://stackoverflow.com/a/16370731/234235を参照)。 同じ修正がActivePython 2.7.8でも機能しました。2013年3月に報告されたバグはまだ開いています:https://github.com/pypa/pip/issues/829。
これが関連しているかどうかはわかりませんが、Anaconda3 / Library / binからAnaconda3 / DLLにこれらのファイルをコピーすることによって修正される同様の問題がありました。
libcrypto-1_1-x64.dll。
libssl-1_1-x64.dll。
--verboseオプションを使用して、pypi.python.orgではなくfiles.pythonhosted.orgにアクセスしたいことを確認するまで、このページの何も機能しませんでした。
--verboseオプションを使用して、実際に失敗しているURLを確認します。
pipを削除し、古いバージョンのpipをインストールすることでこの問題を解決しました: https://pypi.python.org/pypi/pip/1.2.1