我在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:发布于 2017-09-27 12:10:04
问题的核心是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很可能会将新版本的pyopenssl安装在Python导入机器看不到的目录中。要解决此问题,您需要知道pip安装软件包的位置。如果默认的pip输出不能告诉您软件包正在安装,请尝试使用pip install --user --verbose ..。然后,您需要将此路径添加到PYTHONPATH,如下所示,将...替换为pip安装软件包的位置(它应该位于/Users/your_username/下的某个位置)。
export PYTHONPATH="/Users/your_username/Library/...:$PYTHONPATH"
pip show pyopenssl如果可以,那么将上面的export ..添加到您的bash .profile中,这样您的Python运行时总是首先从该目录加载包。
https://stackoverflow.com/questions/41661082
复制相似问题