установка - Невозможно установить пакеты Python




установка библиотек python mac (10)

myenv:

Python 2.7.14

пип 9.0.1

Mac OSX 10.9.4

mysolution:

  1. загрузите get-pip.py вручную с https://packaging.python.org/tutorials/installing-packages/

  2. запустить python get-pip.py

рефов:

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] Это установит или обновит пункт. Кроме того, он установит setuptools и wheel, если они еще не установлены.

Убедитесь, что pip, setuptools и wheel обновлены

В то время как одного pip достаточно для установки из предварительно собранных двоичных архивов, обновленные копии программ setuptools и wheel полезны для обеспечения возможности установки из исходных архивов:

python -m pip install --upgrade pip setuptools wheel

Я пытаюсь установить библиотеку 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

Как я могу исправить эту ошибку?


Для обновления локальной версии я использовал небольшой вариант:

brew install python2

Эта проблема возникает, если вы храните ваши pip и пакеты в своем домашнем каталоге, как описано в этом разделе .


Или просто нужной библиотеки просто нет в репо. Я новичок в Python, и все советы по обновлению pip, наконец, были введены в заблуждение. Я просто заглянул в https://pypi.org/ и обнаружил, что библиотека (в моем случае airflow) остановилась на какой-то старой версии, после чего она была переименована. Да, и это глупое решение также возможно :-).


Но если сама команда curl завершается с ошибкой или «версия протокола оповещения tlsv1» сохраняется даже после обновления pip , это означает, что базовая версия библиотеки OpenSSL вашей операционной системы < 1.0.1 или версия Python < 2.7.9 (или < 3.4 в Python 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') означает, что ваш ssl модуль Python stdlib, скомпилированный со старой библиотекой openssl, не поддерживает протокол TLSv1.2 (даже если библиотека openssl может или может быть обновлена ​​позже).

К счастью, это можно решить без обновления Python (и всей системы), вручную установив дополнительные пакеты Python - подробное пошаговое руководство доступно здесь, в .

Обратите внимание, что curl pip и wget зависят от одной и той же библиотеки OpenSSL для установления соединений SSL (используйте команду $ openssl version ). libcurl поддерживает TLS 1.2 начиная с версии 7.34 curl, но более старые версии curl should иметь возможность подключаться, если у вас была версия OpenSSL 1.0.2 (или более поздняя).

PS
Для Python 3 , пожалуйста, используйте python3 и pip3 везде (если вы не в venv / virtualenv), включая команду curl above :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user


После ответа @ 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] .


Проверьте свою версию 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


Это сработало для меня, я установил последнюю версию pip, а затем установил библиотеку ( ciscoconfparse ).

Обновление пункта:

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

Это сработало для меня. Добавить sudo перед питоном

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

Я также столкнулся с этой проблемой на моем windows10 и попробовал все ответы, но не решил мою проблему.

C: \ python367 \ Scripts> pip install Flask

Сбор Flask Не удалось найти версию, которая удовлетворяет требованию Flask (из версий:) Не найдено соответствующего распределения для Flask

После этого я обнаружил, что файл конфигурации pip был изменен. Итак, я установил pip.ini как исходную конфигурацию по умолчанию, перезапустил команду pip, и она работает для меня!

В заключение о решении моего:

  1. Проверьте, что pip.ini (обычно по пути C:\ProgramData\pip ) был изменен;

  2. Если да на шаге 1, попробуйте сбросить его до конфигурации по умолчанию.


Я тоже столкнулся с этой проблемой. Основная проблема заключается в том, что библиотека 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.







ssl-certificate