PyOpenSSl версия 0.13.1 после обновления pip

Я на Mac El Capitan. Моя система показывает, что я застрял на PyOpenSSl версии 0.13.1. Когда я обновляюсь до 16.2.0, обновление прошло успешно. Тем не менее, когда я проверяю версию, она все еще на 0.13.1. Почему это?

MacBook-Air:include$ sudo pip install pyopenssl --user --upgrade
Password:
The directory '/Users/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/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 pyopenssl
  Downloading pyOpenSSL-16.2.0-py2.py3-none-any.whl (43kB)
    100% |████████████████████████████████| 51kB 1.1MB/s
Requirement already up-to-date: cryptography>=1.3.4 in /Library/Python/2.7/site-packages (from pyopenssl)
Collecting six>=1.5.2 (from pyopenssl)
  Downloading six-1.10.0-py2.py3-none-any.whl
Requirement already up-to-date: cffi>=1.4.1 in /Library/Python/2.7/site-packages (from cryptography>=1.3.4->pyopenssl)
Requirement already up-to-date: pyasn1>=0.1.8 in /Library/Python/2.7/site-packages (from cryptography>=1.3.4->pyopenssl)
Collecting setuptools>=11.3 (from cryptography>=1.3.4->pyopenssl)
  Downloading setuptools-32.3.1-py2.py3-none-any.whl (479kB)
    100% |████████████████████████████████| 481kB 1.3MB/s
Requirement already up-to-date: idna>=2.0 in /Library/Python/2.7/site-packages (from cryptography>=1.3.4->pyopenssl)
Requirement already up-to-date: ipaddress in /Library/Python/2.7/site-packages (from cryptography>=1.3.4->pyopenssl)
Requirement already up-to-date: enum34 in /Library/Python/2.7/site-packages (from cryptography>=1.3.4->pyopenssl)
Requirement already up-to-date: pycparser in /Library/Python/2.7/site-packages (from cffi>=1.4.1->cryptography>=1.3.4->pyopenssl)
Installing collected packages: six, pyopenssl, setuptools

И затем, проверяя версию, она ошибается:

Successfully installed pyopenssl-16.2.0 setuptools-32.3.1 six-1.10.0
MacBook-Air:include$ pip show pyopenssl
Name: pyOpenSSL
Version: 0.13.1
Summary: Python wrapper module around the OpenSSL library
Home-page: http://pyopenssl.sourceforge.net/
Author: Jean-Paul Calderone
Author-email: exarkun@twistedmatrix.com
License: APL2
Location: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Requires:

1 ответ

Суть проблемы в том, что sudo pip install pyopenssl --user --upgrade был установлен в каталог, где "не-sudo" pip ... не посмотрел первым. Есть много причин, почему это может произойти.

Первым аспектом, упрощающим эту проблему, является понимание того, что pip install --user ... никогда не нужно запускать с sudo, --user опция означает установить в каталог пользовательских пакетов (он должен быть в /Users/your_username/ где-то), и расширенные привилегии для этого не нужны.

Если вы попытаетесь pip install --user --upgrade pyopenssl без sudo это должно решить проблему.

Старый pyopenssl-0.13.1 все еще будет существовать в /System/Library/Frameworks/Python.framework/Versions/2.7/... Однако новый должен теперь существовать в /Users/your_username/... и должен быть найден первым механизмом импорта Python.

Тем не менее, есть разумный шанс, что pip install --user устанавливает новую версию pyopenssl в каталог, в который не загружается механизм импорта Python. Чтобы это исправить, нужно знать где pip устанавливает пакет. Попробуйте использовать pip install --user --verbose .. если вывод pip по умолчанию не говорит о том, что пакет был установлен. Затем вам нужно добавить этот путь к PYTHONPATHтакие как следующие с ... заменить на где pip установил пакет (он должен быть под /Users/your_username/ где-то).

export PYTHONPATH="/Users/your_username/Library/...:$PYTHONPATH"
pip show pyopenssl

Если это работает, добавьте выше export .. на ваш удар .profile так что ваша среда исполнения Python всегда сначала загружает пакеты из этого каталога.

Другие вопросы по тегам