pip升级后的PyOpenSSl版本0.13.1

时间:2017-01-15 12:28:07

标签: openssl pip osx-elcapitan pyopenssl

我在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 个答案:

答案 0 :(得分:1)

问题的核心是sudo pip install pyopenssl --user --upgrade正在安装到"非sudo"的目录中。 pip ...没有先看。可能发生这种情况的原因有很多。

简化此问题的第一个方面是理解pip install --user ...永远不需要与sudo一起运行。 --user选项意味着安装到用户包目录中(它应该位于/Users/your_username/某处),并且不需要高级权限。

如果您在没有sudo的情况下尝试pip install --user --upgrade pyopenssl,它应该可以解决问题。

旧的pyopenssl-0.13.1仍然存在于/System/Library/Frameworks/Python.framework/Versions/2.7/...中,但是新的pyopenssl-0.13.1现在应该存在于/Users/your_username/...中,并且应该首先由Python导入机制找到。

但是,pip install --user有可能在Python导入机器看不到的目录中安装新版本的pyopenssl。 要解决此问题,您需要知道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运行时始终首先从该目录加载包。