Устранение неполадок при установке запросов Python в OS X

852
gatorback

Попытки выполнить пример скрипта flightaware python не удаются :

Users-MacBook-Air:FlightAwareXML3 user$ python flightawareXML01.py Traceback (most recent call last): File "flightawareXML01.py", line 9, in <module> import requests  

Попытка установить запросы через pip не удалась:

# sudo pip install requests ImportError: No module named requests Users-MacBook-Air:FlightAwareXML3 user$ sudo pip install requests Password: The directory '/Users/user/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/user/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting requests Could not fetch URL https://pypi.python.org/simple/requests/: 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 requests (from versions: ) No matching distribution found for requests Users-MacBook-Air:FlightAwareXML3 user$ pip --version 

ВОПРОС

Сертификат SSL препятствует установке запросов ?

Очевидно, на Mac установлены две версии Python:

pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7) Users-MacBook-Air:FlightAwareXML3 user$ pip3 --version pip 8.0.2 from /usr/local/lib/python3.5/site-packages (python 3.5) Users-MacBook-Air:FlightAwareXML3 user$ which python /usr/bin/python 

Попытайтесь установить через pip3:

Users-MacBook-Air:FlightAwareXML3 user$ sudo pip3 install requests Password: The directory '/Users/user/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/user/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting requests Downloading https://files.pythonhosted.org/packages/49/df/50aa1999ab9bde74656c2919d9c0c085fd2b3775fd3eca826012bef76d8c/requests-2.18.4-py2.py3-none-any.whl (88kB) 100% |████████████████████████████████| 90kB 94kB/s  Collecting chardet<3.1.0,>=3.0.2 (from requests) Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB) 100% |████████████████████████████████| 135kB 102kB/s  Collecting certifi>=2017.4.17 (from requests) Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl (150kB) 100% |████████████████████████████████| 151kB 130kB/s  Collecting idna<2.7,>=2.5 (from requests) Downloading https://files.pythonhosted.org/packages/27/cc/6dd9a3869f15c2edfab863b992838277279ce92663d334df9ecf5106f5c6/idna-2.6-py2.py3-none-any.whl (56kB) 100% |████████████████████████████████| 57kB 137kB/s  Collecting urllib3<1.23,>=1.21.1 (from requests) Downloading https://files.pythonhosted.org/packages/63/cb/6965947c13a94236f6d4b8223e21beb4d576dc72e8130bd7880f600839b8/urllib3-1.22-py2.py3-none-any.whl (132kB) 100% |████████████████████████████████| 135kB 163kB/s  Installing collected packages: chardet, certifi, idna, urllib3, requests Successfully installed certifi-2018.4.16 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22 You are using pip version 8.0.2, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. 

Попытайтесь запустить скрипт Python:

Users-MacBook-Air:FlightAwareXML3 user$ python flightawareXML01.py Traceback (most recent call last): File "flightawareXML01.py", line 9, in <module> import requests # sudo pip install requests ImportError: No module named requests 

Вопросы:

  1. Выполняется ли файл .py в Python 2.7 или 3?
  2. Как диагностировать основную причину / корректирующее действие при сбоях установки pip?

ОБНОВЛЕНИЕ

Успешно работает скрипт Python с Python3

python3 flightawareXML01.py 

Python 2.7 результаты запроса openSSL:

Users-MacBook-Air:FlightAwareXML3 user$ python3 -c "import ssl; print(ssl.OPENSSL_VERSION)" OpenSSL 1.0.2g 1 Mar 2016 Users-MacBook-Air:FlightAwareXML3 user$ python -c "import ssl; print(ssl.OPENSSL_VERSION)" OpenSSL 0.9.8zh 14 Jan 2016 
0

1 ответ на вопрос

1
Anaksunaman

Выполняется ли файл .py в Python 2.7 или 3?

Поскольку вы requestsуспешно установили pip3и python flightawareXML01.pyуказали, что он requestsвсе еще не найден, кажется разумным предположить, что ваша pythonкоманда пытается выполнить ваш .pyфайл в Python 2.7 (вы всегда можете использовать python -Vдля двойной проверки версии).

Чтобы решить эту проблему, попробуйте использовать python3вместо python(т.е. python3 flightawareXML01.py).

Сертификат SSL препятствует requestsустановке?

Кажется вероятным, что это не проблема сертификата сама по себе (поскольку текущий сертификат SSL для https://pypi.python.org/simple/requests/кажется действительным), но ошибка, похоже, относится к SSL.

Как можно диагностировать основную причину / корректирующее действие для pip installсбоев?

Ошибка, которую вы получили:

Не удалось получить URL-адрес https://pypi.python.org/simple/requests/ : при подтверждении сертификата ssl возникла проблема: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] версия протокола оповещения tlsv1 (_ssl.c: 590) - пропуск

Судя по всему, у меня не было определенного вывода из того, что я мог сказать, кроме неправильных версий протокола SSL или шифров, которые, возможно, использовались между клиентом ( pip) и сервером (основанным на поиске в Google tlsv1 alert protocol version).

Тем не менее, вы можете быть заинтересованы в этом вопросе StackOverflow, а также этот вопрос . Оба они предлагают средства для решения этой проблемы (хотя, по общему признанию, ответы, кажется, главным образом вращаются вокруг обновления OpenSSL / Python).