修改:
问题是我安装了virtualenv==1.9
这是一个破碎的版本。在您尝试调试任何内容之前,我建议您升级您的软件包; - )
原始:
我遇到了pip的问题,并且(可能)openssl找到了here。简单的解决方法是降级到1.2.1。这有效但每次我使用virtualenv创建一个虚拟环境时,它会安装pip 1.5.6当前版本的pip。如果您安装djangocms-installer会发生同样的情况,因此每次我安装具有依赖关系的东西时,我都必须再次检查/设置pip版本。
有没有办法为virtualenv设置pip版本?
有没有办法设置'默认'每个程序安装程序的版本?
编辑:
OS:Mac os 10.7.5
Python:2.7
答案 0 :(得分:6)
您遇到了问题,因为您降级了pip
,但可能没有改变virtualenv
安装默认pip
的行为。你会如何调试这个?
查找正在调用的virtualenv
脚本:
[~] type -a virtualenv
virtualenv is an alias for virtualenv --no-site-packages
virtualenv is /usr/local/bin/virtualenv
从virtualenv
获取一些信息:
[~] head -n5 /usr/local/bin/virtualenv
#!/usr/local/opt/python/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.11.5','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.11.5'
import sys
from pkg_resources import load_entry_point
现在我们知道virtualenv
正在使用位于/usr/local/opt/python/bin
的Python 2.7安装。
虽然您可以按照导入路径进行操作,但只需查看我们在#2中找到的目录就可以轻松查看将被调用的pip
:
[~] ls /usr/local/opt/python/bin | grep pip
pip
pip2
pip2.7
并要求pip
为您提供其版本:
[~] /usr/local/opt/python/bin/pip -V
pip 1.5.6 from /usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/pip-1.5.6-py2.7.egg (python 2.7)
这就是原因!
虽然我强烈建议修复您的SSL问题而不是降级pip
,但您有以下选择:
一个。在步骤3中找到的位置降级pip
“全局”版本。如果查看/usr/local/bin/pip
,您会看到以下内容:
#!/usr/local/opt/python/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.6','console_scripts','pip'
__requires__ = 'pip==1.5.6'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
)
如果您的Python路径中有pip
的旧版本(例如),则应该可以替换__requires__
和load_entry_point(...
行上的版本。
B中。通过在创建virtualenv
时指定pip
标记,告诉--no-pip
不要安装virtualenv
。然后,您将负责将所需的pip
文件放入虚拟环境bin
和lib
文件夹中。
℃。到处降级pip
。当您安装旧版本的pip
时,它最终会出现在错误的目录中,或者不是Python通过pip
设置时找到的第一个virtualenv
。小心调用virtualenv
正在调用的相同Python解释器。
(另请注意,你可以通过编辑activate
脚本来“欺骗”虚拟环境,但你比我更勇敢。)