Pythonパッケージをインストールできない[SSL:TLSV1_ALERT_PROTOCOL_VERSION]


167

を使用してPythonライブラリをインストールしようとするとpip、SSLエラーが発生します。

~/projects/base  pre-master±  pip install xdict

Collecting xdict
  Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
  Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict

pipバージョン:pip 9.0.1

このエラーを修正するにはどうすればよいですか?


1
この回答をフォロー stackoverflow.com/a/46808948/2419644
Mitulシャー

回答:


443

次のようにpipをアップグレードします。

curl https://bootstrap.pypa.io/get-pip.py | python

注:sudo python仮想環境でない場合は、上記を使用する必要がある場合があります。

(ie をpip使用してアップグレードしても正しくアップグレードされないことに注意してください。これは鶏と卵の問題にすぎません。TLS> = 1.2を使用しないと機能しません。)pippip install --upgrade pippip

この詳細な回答で述べたように、これは、pipの最近のTLSの廃止によるものです。Python.orgサイトは、TLSバージョン1.0および1.1のサポート停止しました。

Pythonステータスページから:

完了 -ローリングブラウンアウトが終了し、TLSv1.0およびTLSv1.1が無効になりました。4月11日15:37 UTC


PyCharm(virtualenv)ユーザーの場合:

  1. シェルで仮想環境を実行します。(「./venv/bin/activate」を独自のパスに置き換えます)

    source ./venv/bin/activate
  2. アップグレードを実行

    curl https://bootstrap.pypa.io/get-pip.py | python
  3. PyCharmインスタンスを再起動し、Preferenceで Pythonインタープリターを確認します。


2
これは私のために働いた!sudo許可拒否エラーのため、前に追加する必要がありました。ありがとう!
Simar 2018

34
sudoが機能する必要があります: curl https://bootstrap.pypa.io/get-pip.py | sudo python
ウォレス

2
@Simar @Wallaceええ、sudo仮想環境でない場合は必要になるかもしれません。答えにもそのビットを追加しました。
Anupam

1
仮想環境ではない場合、Ilyaが以下で言及するように、Pythonバイナリへのパスを指定する必要があるかもしれません
Chris

2
OSXでは、これは私にとってより効果的でしたcurl https://bootstrap.pypa.io/get-pip.py | sudo -H python3
ニックフォックス

26

ただし、curlコマンド自体がエラーで失敗するか、「tlsv1アラートプロトコルバージョン」がアップグレード後も持続するpip場合は、オペレーティングシステムの基盤となるOpenSSLライブラリバージョン< 1.0.1またはPythonバージョン< 2.7.9(または< 3.4Python 3では)が新しいTLS 1.2プロトコルをサポートしていないことを意味しますpipニーズがあるためは、PyPIに接続するにはおよそ一年前。Pythonインタープリターで簡単に確認できます。

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8o 01 Jun 2010'
>>> ssl.PROTOCOL_TLSv1_2
 AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2'

AttributeError(代わりに「5」と予想)あなたのPython STDLIB意味ssl古いのopensslのlibに対してコンパイルされたモジュールは、(OpenSSLライブラリは、以降に更新することができができたとしても)TLSv1.2プロトコルのサポートを欠いています。

幸い、Python(およびシステム全体)をアップグレードせずに、手動で追加のPythonパッケージをインストールすることで解決できます。詳細なステップバイステップガイドは、こちらのStackoverflowから入手できます

注意、curlおよびpipおよびwgetすべてのSSL接続(使用確立するために、同じOpenSSLのlibに依存$ openssl versionコマンド)。libcurlはcurlバージョン7.34以降、TLS 1.2をサポートしていますが、OpenSSLバージョン1.0.2(またはそれ以降)を使用している場合、古いcurlバージョン接続できるはずです。


PS
のPython 3には、使用してくださいpython3pip3(あなたがA venv / virtualenvのでない限り)を含め、どこでもcurlからのコマンドを上記
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user


4
pip3だけでなく、を実行する必要があることにも気付きpipました。コマンドでバージョンを-V確認して、正しいピップを実行していることを確認してください。
1

9

OS Xでの@Anupamの回答に従うと、実行した権限に関係なく、次のエラーが発生しました。

EnvironmentErrorによりパッケージをインストールできませんでした:[Errno 13]権限が拒否されました:...

最終的に機能したのは、ブラウザから直接PyPIから新しいpipパッケージ(9.0.3)をダウンロードし、https: //pypi.org/simple/pip/からコンテンツを抽出して、パッケージをローカルにpipインストールすることでした。

pip install ./pip-9.0.3/

これで[SSL: TLSV1_ALERT_PROTOCOL_VERSION]エラーが修正されました。


7

@Anupamの解決策は私にとってうまくいきました。ただし、sudo仮想Python環境の正確な場所を使用して指定する必要がありました。

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

6

ローカルバージョンをアップグレードするために、私はわずかな変形を使用しました:

curl https://bootstrap.pypa.io/get-pip.py | python - --user

この問題は、この要点で説明されているように、pipとパッケージをホームディレクトリの下に置いた場合に発生します。


5

次の解決策が私にとってうまくいきました:

brew install python2

またpip、バージョン1.10.1にアップグレードしました


^これは、OSXでデフォルトのpythonを使用していない人のためのものです。質問はOSX固有ではなかったと思いますが、とにかく、Linuxを実行していない場合、これは機能します---システムにインストールされたPythonにコンテンツを書き込んでいる場合を除きます。
jar

これは私のために働いた、私はOSXでpythonを使用します。1週間かけてpipパッケージをインストールしようとして、失敗しました。私はpipをアンインストールしましたが、この時点から、pipをインストールするこのコマンドを取得するまで何もできません。ありがとうございました!
amm

3

TLSバージョンを確認します。

python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"

TLSのバージョンが1.2未満の場合は、PyPIリポジトリが初期のTLSを非推奨にするブラウンアウト期間であるため、バージョンをアップグレードする必要があります。

ソース-Pythonをアップグレードする時間:TLS v1.2がまもなく必須になる

次のコマンドを使用してTLSバージョンをアップグレードできます。

sudo apt-get update && sudo apt-get install openssl libssl-dev

これで問題が解決するはずです。幸運を!

編集:TLSのバージョンに関係なく、独自のプライベートPythonパッケージリポジトリを使用してパッケージをダウンロードできます。 プライベートPythonパッケージリポジトリ


2

これでうまくいきました。Pythonの前にsudoを追加する

curl https://bootstrap.pypa.io/get-pip.py |sudo python

2

Python2 WIN10ユーザーの場合:

1. pythonを完全にアンインストールし、すべてのフォルダを含めます。

2.最新のpython-2.7.msi(バージョン2.7.15)を取得してインストールします。

3.手順2の後、pipもインストールされている場合があります。

4.システムの環境が変更されていない場合は、pipを使用してパッケージをインストールできます。「tlsv1アラートプロトコルバージョン」は表示されません。



2

私もこの問題に遭遇しました。根本的な問題は、Python 2.7バージョン2.7.9未満のsslライブラリがpipメカニズムと互換性がないことです。

Windowsで実行していて、互換性のないバージョンの2.7、FWIWから簡単にアップグレードできない場合、最新バージョンのPythonの別のインストール(Python 2.7など)から次のファイルをコピーすると、 15)インストール先の別のマシン:

    Lib\ssl.py
    libs\_ssl.lib
    DLLs\_ssl.dll

SSL層をサポートされているものに効果的に「アップグレード」します。その後、pipをアップグレードするために、pipを再び使用することができました。


2

を介してpipをインストールすることの答え:

  1. curl https://bootstrap.pypa.io/get-pip.py |sudo python または
  2. curl https://bootstrap.pypa.io/get-pip.py | python

私がエラーを出し続けたので私にとってはうまくいきませんでした:

Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping
ERROR: Could not find a version that satisfies the requirement pip (from versions: none)
ERROR: No matching distribution found for pip

私はpip手動でインストールする必要がありました:

  1. 行くpip配布サイトを
  2. tar.gzバージョンをダウンロード
  3. ローカルでcdディレクトリにファイルを解凍します
  4. 走る python setup.py install

1

これは私にとってはうまくいき、pipの最新バージョンをインストールしてから、ライブラリ(ciscoconfparse)をインストールしました。

ピップのアップグレード:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

1

myenv:

python 2.7.14

ピップ9.0.1

Mac OSX 10.9.4


mysolution:

  1. https://packaging.python.org/tutorials/installing-packages/get-pip.pyから手動でダウンロードします

  2. 走る python get-pip.py


refs:

https://github.com/pypa/warehouse/issues/3293#issuecomment-378468534

https://packaging.python.org/tutorials/installing-packages/

get-pip.py [1]を安全にダウンロード

python get-pip.pyを実行します。[2]これにより、pipがインストールまたはアップグレードされます。さらに、setuptoolsとwheelがまだインストールされていない場合はインストールします。

pip、setuptools、およびwheelが最新であることを確認します

ビルド済みのバイナリアーカイブからのインストールにはpipだけで十分ですが、setuptoolsとwheelプロジェクトの最新のコピーは、ソースアーカイブからもインストールできることを確認するのに役立ちます。

python -m pip install --upgrade pip setuptools wheel


1

私はまた、私のwindows10でこの問題にぶつかり、すべての答えを試しましたが、私の問題を解決しませんでした。

C:\ python367 \ Scripts> pip install Flask

Flaskの収集Flaskの要件を満たすバージョンが見つかりませんでした(バージョン:から)。Flaskに一致するディストリビューションが見つかりません

その後、pip構成ファイルが変更されたことがわかりました。だから、私pip.iniはを元のデフォルト設定として設定し、pipコマンドを再実行するとうまくいきます!

私の解決策の要約:

  1. pip.ini(通常はパスの下C:\ProgramData\pip)が変更されていることを確認します。

  2. ステップ1で「はい」の場合は、デフォルト構成にリセットしてみてください。


1

または、単に必要なライブラリがリポジトリにないだけです。私はPythonの初心者ですが、pipのアップグレードに関するすべてのアドバイスが最終的に誤解を招くものとして示されました。私はhttps://pypi.org/を調べて、ライブラリ(私の場合はエアフロー)が古いバージョンで停止したことを確認する必要があり、その後、名前が変更されました。はい、その愚かな解決策も可能です:-)。


1

そこにいるすべてのユーザーpython3pip3ユーザー:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3

そして、パンダをインストールすると仮定します

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