Невозможно установить пакеты Python [SSL: TLSV1_ALERT_PROTOCOL_VERSION]
Я пытаюсь установить библиотеку 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
версия пипа: пип 9.0.1
Как я могу исправить эту ошибку?
13 ответов
Обновите пункт следующим образом:
curl https://bootstrap.pypa.io/get-pip.py | python
Примечание: вам может понадобиться sudo python
выше, если не в виртуальной среде.
(Обратите внимание, что обновление pip
с помощью pip
т.е. pip install --upgrade pip
также не будет обновлять его правильно. Это просто вопрос курицы и яйца. pip
не будет работать, если не использовать TLS >= 1.2.)
Как уже упоминалось в этом подробном ответе, это связано с недавним устареванием TLS для pip. Сайты Python.org прекратили поддержку TLS версий 1.0 и 1.1.
Со страницы состояния Python:
Завершено - Скользящие отключения завершены, и TLSv1.0 и TLSv1.1 были отключены. 11 апреля 15:37 UTC
Для пользователей PyCharm (virtualenv):
Запустите виртуальную среду с оболочкой. (замените "./venv/bin/activate" на свой собственный путь)
source ./venv/bin/activate
Запустить обновление
curl https://bootstrap.pypa.io/get-pip.py | python
Перезапустите свой экземпляр PyCharm и проверьте ваш интерпретатор Python в настройках.
И для пользователей Python 3, curl должен быть передан python3
:
$ curl https://bootstrap.pypa.io/get-pip.py | python3
Если какой-либо из вышеперечисленных curl
Команды терпят неудачу с той же самой ошибкой "версии протокола оповещения tlsv1", убедитесь, что базовая библиотека OpenSSL вашей системы по крайней мере версии 1.0.1, для работы TLS v1.2.
И curl и pip (и wget) зависят от OpenSSL для установления соединений SSL. Версия может быть проверена с $ openssl version
команда.
libcurl сама поддерживает TLS 1.2 начиная с версии 7.34 curl, но более старые версии также должны иметь возможность подключаться, если у вас OpenSSL версии 1.0.2 (или более поздней), которая использует TLS 1.2 по умолчанию. Если вам не хватает таких инструментов, как curl, и вы не можете его установить, вы также можете загрузить get-pip.py (или сам пакет pip), используя ваш любимый веб-браузер...
Наконец, если все еще нет, еще одна вещь, которая может помочь (особенно для старых версий OS / Python), - убедиться, что установлены следующие пакеты Python (зависимости, связанные с функционированием SSL и pip): pyasn1, certifi, asn1crypto, cryptography, pyOpenSSL, urllib3
Вы можете проверить, какой из них отсутствует, попробовав этот импорт в интерпретаторе Python:
>>> import pyasn1, certifi, asn1crypto, cryptography, OpenSSL, urllib3
Поскольку pip не может подключиться (пока), просто загрузите их последние колеса с pypi.org через ваш любимый веб-браузер по одному и установите, используя pip install --user <package-file.whl>
команда (или pip3
для Python 3) в том же порядке, как указано выше, для разрешения зависимостей в пипсах.
Примечание: ему должна предшествовать команда оболочки $ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
(или же python3-dev
в случае Python 3) для обеспечения возможности сборки этих пакетов Python.
После ответа @Anupam на OS X я получил следующую ошибку, независимо от того, с какими разрешениями я ее запускал:
Не удалось установить пакеты из-за ошибки EnvironmentError: [Errno 13] Отказано в доступе:...
В конечном итоге мне удалось загрузить новый пакет pip (9.0.3) из PyPI прямо из моего браузера - https://pypi.org/simple/pip/, извлечь его содержимое, а затем установить пакет pip локально:
pip install ./pip-9.0.3/
Это исправило мой [SSL: TLSV1_ALERT_PROTOCOL_VERSION]
ошибки.
Решение @Anupam сработало для меня. Тем не менее, я должен был использовать sudo
и укажите точное местоположение моей виртуальной среды Python:
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
Для обновления локальной версии я использовал небольшой вариант:
curl https://bootstrap.pypa.io/get-pip.py | python - --user
Эта проблема возникает, если вы храните ваши pip и пакеты в своем домашнем каталоге, как описано в этом разделе.
Следующее решение работало для меня:
brew install python2
Он также обновлен pip
до версии 1.10.1
Проверьте свою версию 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.
Source - Время обновить ваш Python: TLS v1.2 скоро будет обязательным
Вы можете обновить версию TLS, используя следующую команду:
sudo apt-get update && sudo apt-get install openssl libssl-dev
Это должно исправить вашу проблему. Удачи!
РЕДАКТИРОВАТЬ: Вы можете скачать пакеты, используя свой собственный личный репозиторий пакетов Python независимо от версии TLS. Закрытый репозиторий пакетов Python
Для всех python3
а также pip3
пользователи там:
curlhttps://bootstrap.pypa.io/get-pip.py | sudo python3
а затем предположим, что вы хотите установить панды
pip3 install pandas --user
Это сработало для меня. Добавить sudo перед питоном
curl https://bootstrap.pypa.io/get-pip.py |sudo python
Я пробовал все существующие исправления и не работает для меня
Я переустанавливаю python 2.7 (также установлю pip), скачав.pkg по адресу https://www.python.org/downloads/mac-osx/
у меня работает после установки скачал pkg
Ответы на установку pip через:
curl https://bootstrap.pypa.io/get-pip.py |sudo python
или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
вручную через:
- Иди в
pip
сайт распространения - Загрузите
tar.gz
версия - Распакуйте файл локально и
cd
в каталог - бегать
python setup.py install
Для пользователей Python2 WIN10:
1. Тщательно удалите python, включите все папки.
2. Загрузите и установите последнюю версию python-2.7.msi (версия 2.7.15).
3. После шага 2 вы можете обнаружить, что pip тоже был установлен.
4. Теперь, если ваша системная среда не была изменена, вы можете использовать pip для установки пакетов. "Версия протокола оповещения tlsv1" не появится.
Я столкнулся с этой проблемой также. Основная проблема заключается в том, что библиотека ssl в версиях Python 2.7 < 2.7.9 больше не совместима с механизмом pip.
Если вы работаете в Windows, и вы (как и мы) не можете легко перейти с несовместимой версии 2.7, FWIW, я обнаружил, что при копировании следующих файлов из другой установки последней версии Python (например, Python 2.7).15) на другой машине к вашей установке:
Lib\ssl.py
libs\_ssl.lib
DLLs\_ssl.dll
он эффективно "обновит" ваш уровень SSL до уровня, который поддерживается; тогда мы смогли снова использовать pip, даже для обновления pip.
Это сработало для меня, я установил последнюю версию pip, а затем установил библиотеку (ciscoconfparse).
Обновление пункта:
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
myenv:
Python 2.7.14
пип 9.0.1
Mac OSX 10.9.4
mysolution:
скачать
get-pip.py
вручную с https://packaging.python.org/tutorials/installing-packages/бежать
python get-pip.py
рефов:
https://github.com/pypa/warehouse/issues/3293
https://packaging.python.org/tutorials/installing-packages/
Безопасно скачать get-pip.py [1]
Запустите python get-pip.py. [2] Это установит или обновит пункт. Кроме того, он установит setuptools и wheel, если они еще не установлены.
Убедитесь, что pip, setuptools и wheel обновлены
В то время как одного pip достаточно для установки из предварительно собранных двоичных архивов, обновленные копии программ setuptools и wheel полезны для обеспечения возможности установки из исходных архивов:
python -m pip install --upgrade pip setuptools wheel
Или просто нужной библиотеки просто нет в репо. Я новичок в Python, и все советы по обновлению pip, наконец, показаны как вводящие в заблуждение. Мне нужно было просто заглянуть на https://pypi.org/, обнаружив, что библиотека (воздушный поток в моем случае) остановилась на какой-то старой версии, после чего она была переименована. Да, тоже возможно это глупое решение:-).
Я также столкнулся с этой проблемой на моем windows10 и перепробовал все ответы, но не решил мою проблему.
C: \ python367 \ Scripts> pip install Flask
Сбор Flask Не удалось найти версию, которая удовлетворяет требованию Flask (из версий:) Не найдено соответствующего распределения для Flask
После этого я обнаружил, что файл конфигурации pip был изменен. Итак, я установил pip.ini
в качестве исходной конфигурации по умолчанию, повторно запустите команду pip, и она работает для меня!
В кратком изложении моей ситуации:
Проверьте pip.ini (обычно под путем
C:\ProgramData\pip
) был изменен;Если да на шаге 1, попробуйте сбросить его до конфигурации по умолчанию.