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 всегда сначала загружает пакеты из этого каталога.