在virtualenv中的Pip版本

yam*_*amm -1 python pip virtualenv

编辑:

问题是我virtualenv==1.9安装了哪个是破损版本.在你尝试调试任何东西之前我建议你升级你的包;-)

原文:

我在这里找到了pip和(可能)openssl的问题.简单的解决方法是降级到1.2.1.这有效,但每次我用virtualenv创建一个虚拟环境时,它会安装pip 1.5.6当前版本的pip.如果你安装djangocms-installer会发生同样的情况,所以每次我安装带有依赖关系的东西到pip我都要再次检查/设置pip版本.

有没有办法为virtualenv设置pip版本?

有没有办法为该程序的每次安装设置程序的"默认"版本?

编辑:

操作系统:Mac os 10.7.5

Python:2.7

小智 6

你遇到了问题,因为你正在降级pip,但可能没有改变virtualenv安装默认设置的行为pip.你会如何调试这个?

  1. 查找virtualenv正在调用的脚本:

    [~] type -a virtualenv                                                                                                                           
    virtualenv is an alias for virtualenv --no-site-packages
    virtualenv is /usr/local/bin/virtualenv
    
    Run Code Online (Sandbox Code Playgroud)
  2. 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
    
    Run Code Online (Sandbox Code Playgroud)

现在我们知道virtualenv正在使用位于的Python 2.7安装/usr/local/opt/python/bin.

  1. 虽然您可以按照导入路径进行操作,但只需查看我们在#2中找到的目录就可以轻松查看pip将被调用的目录:

    [~] ls /usr/local/opt/python/bin | grep pip                                                                                                          
    pip
    pip2
    pip2.7
    
    Run Code Online (Sandbox Code Playgroud)

并要求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)
Run Code Online (Sandbox Code Playgroud)

这就是为什么!

虽然我强烈建议修复您的SSL问题而不是降级pip,但您有一些选择:

A. pip在第3步中找到的位置降级"全局" 版本.如果查看/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')()
        )
Run Code Online (Sandbox Code Playgroud)

如果您pip的Python路径中有较旧版本(例如),则应该能够替换__requires__load_entry_point(...行上的版本.

B. 通过在创建时指定标志virtualenv来告诉不要安装.然后,您将负责将所需文件放入虚拟环境和文件夹中.pip--no-pipvirtualenvpipbinlib

C. pip到处降级.当您安装旧版本时pip,它或者最终出现在错误的目录中,或者不是pipPython在进行virtualenv设置时找到的第一个目录.小心调用正在调用的相同Python解释器virtualenv.

(另请注意,你可以通过编辑activate脚本来"欺骗"虚拟环境,但你比我更勇敢.)