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

Я на 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: [email protected]
License: APL2
Location: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Requires:

person user2989813    schedule 15.01.2017    source источник
comment
Спасибо за предложения. Я попытался создать правильную символическую ссылку, но у меня все еще есть проблемы. У меня есть следующая ссылка: staff 44 Jan 16 01:11 openssl -> /usr/local/Cellar/openssl/1.0.2j/bin/openssl. Однако «который openssl» дает «OpenSSL 0.9.8zh 14 января 2016 года», а не версию 1.0.2j. Есть идеи, почему?   -  person user2989813    schedule 16.01.2017


Ответы (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 .. в ваш bash .profile, чтобы ваша среда выполнения Python всегда загружала пакеты из этого каталога в первую очередь.

person John Vandenberg    schedule 27.09.2017