Python virtualenv中的Pip版本

Python virtualenv中的Pip版本,python,pip,virtualenv,Python,Pip,Virtualenv,编辑: 问题是我安装了virtualenv==1.9,这是一个坏版本。在您尝试调试任何东西之前,我建议您升级软件包;-) 原件: 我发现pip和(可能)openssl有问题。简单的解决方法是将pip降级到1.2.1。这是可行的,但每次我使用VirtualEnvironment创建虚拟环境时,它都会安装pip 1.5.6,即当前版本的pip。如果安装djangocms安装程序,也会发生同样的情况,因此每次我安装与pip有依赖关系的东西时,我都必须再次检查/设置pip版本 有没有办法为virtual

编辑

问题是我安装了
virtualenv==1.9
,这是一个坏版本。在您尝试调试任何东西之前,我建议您升级软件包;-)

原件

我发现pip和(可能)openssl有问题。简单的解决方法是将pip降级到1.2.1。这是可行的,但每次我使用VirtualEnvironment创建虚拟环境时,它都会安装pip 1.5.6,即当前版本的pip。如果安装djangocms安装程序,也会发生同样的情况,因此每次我安装与pip有依赖关系的东西时,我都必须再次检查/设置pip版本

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

是否有办法为该程序的每次安装设置“默认”版本

编辑:

操作系统:Mac OS 10.7.5


Python:2.7

您遇到了一个问题,因为您正在降级
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
    ,但您有一些选择:

    A.在步骤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
    (例如),您应该能够在
    \uuuuuu requires\uuuuu
    load\u entry\u点(…
    行)上替换该版本

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

    C.到处降级
    pip
    。当您安装较旧版本的
    pip
    时,它要么最终位于错误的目录中,要么不是Python在执行
    virtualenv
    设置时找到的第一个
    pip
    。请小心调用与调用的
    virtualenv
    相同的Python解释器


    (还要注意的是,你可以通过编辑
    激活
    脚本来“欺骗”虚拟环境,但你比我更勇敢。)

    太好了,给我一点时间,我会教你如何调试。试着玩符号链接,我承认这是一个错误。但它可以工作。谢谢你的回答。我希望能够按照你的调试指南进行调试,因为我的虚拟环境从库文件夹中获取python。atm我必须做一些工作,但我会尝试找到这个pip轻松安装入口脚本没有问题。路径不应该相同。我设法找到了ssl问题的解决方案,但我的virtualenvs中仍然有1.5.6个pip;-)编辑:如果有人有相同的ssl问题,请检查是否使用virtualenv 1.9,如果这样做,则必须更新它