我在 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] /cdn-cgi/l/email-protection
License: APL2
Location: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Requires:
问题的核心在于sudo pip install pyopenssl --user --upgrade
正在安装到“非 sudo”的目录中pip ...
没先看。发生这种情况的原因有很多。
简化这个问题的第一个方面是理解pip install --user ...
永远不需要运行sudo
. The --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运行时总是首先从该目录加载包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)