I am on Mac El Capitan. My system shows me stuck on PyOpenSSl version 0.13.1. When I upgrade to 16.2.0, the upgrade is successful. However, when I check the version, it's still on 0.13.1. Why is this?
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
And then checking the version, it's the wrong one:
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:
The core of the problem is that
sudo pip install pyopenssl --user --upgrade
was installing into a directory where the "non-sudo"pip ...
did not look first. There are many reasons why that might happen.The first aspect to simplify this problem is understanding that
pip install --user ...
should never need to be run withsudo
. The--user
option means install into the user packages directory (it should be under/Users/your_username/
somewhere), and advanced privileges are not needed for that.If you try
pip install --user --upgrade pyopenssl
without sudo, it should solve the problem.The old pyopenssl-0.13.1 will still exist in
/System/Library/Frameworks/Python.framework/Versions/2.7/...
, however the new one should now exist in/Users/your_username/...
and should be found first by the Python import machinery.However, there is a reasonable chance that
pip install --user
is installing the new version of pyopenssl in a directory where the Python import machinery doesnt look. To fix this, you need to know wherepip
is installing the package. Try usingpip install --user --verbose ..
if the default pip output it doesnt tell you were the package is being installed. Then you need to add this path toPYTHONPATH
, such as the following with...
replaced with wherepip
installed the package (it should be under/Users/your_username/
somewhere).If that works, add the above
export ..
to your bash.profile
so that your Python runtime is always loading packages from that directory first.