Python Pip版本悬而未决

Python Pip版本悬而未决,python,macos,pip,Python,Macos,Pip,我的情况基本上与 也就是说,我的mac电脑默认使用Python2.7,而Pip则安装到2.6 我使用默认的Python安装了easy_install,并用它安装了Pip 现在我得到: $ type pip pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip $ echo $PATH /Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin

我的情况基本上与

也就是说,我的mac电脑默认使用Python2.7,而Pip则安装到2.6

我使用默认的Python安装了easy_install,并用它安装了Pip

现在我得到:

$ type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
$ which pip  
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ sudo bash  
bash-3.2# type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
bash-3.2# echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
bash-3.2# ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$哪个易于安装
/Library/Frameworks/Python.framework/Versions/2.7/bin/easy_install
哪一点
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip
好的,看起来不错。但是,我也知道:

$ type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
$ which pip  
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ sudo bash  
bash-3.2# type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
bash-3.2# echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
bash-3.2# ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$pip——版本
pip1.0.2来自/Library/Python/2.6/site-packages/pip-1.0.2-py2.6.egg(python2.6)
Pip仍在安装到2.6

我错过了什么


更新

也许这是一个线索-我刚刚运行了以下命令:

$ ls -la /usr/bin/python*  
-rwxr-xr-x  2 root  wheel  86000 May  4  2011 /usr/bin/python  
-rwxr-xr-x  5 root  wheel    925 May  4  2011 /usr/bin/python-config  lrwxr-xr-x  1 root  wheel     75 May  4  2011 /usr/bin/python2.5 ->
../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5
lrwxr-xr-x  1 root  wheel     82 May  4  2011
/usr/bin/python2.5-config ->
../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5-config
lrwxr-xr-x  1 root  wheel     75 May  4  2011 /usr/bin/python2.6 ->
../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6
lrwxr-xr-x  1 root  wheel     82 May  4  2011
/usr/bin/python2.6-config ->
../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6-config
-rwxr-xr-x  2 root  wheel  86000 May  4  2011 /usr/bin/pythonw lrwxr-xr-x  1 root  wheel     76 May  4  2011 /usr/bin/pythonw2.5 ->
../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw2.5
lrwxr-xr-x  1 root  wheel     76 May  4  2011 /usr/bin/pythonw2.6 ->
../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/pythonw2.6

看起来我的用户环境指向2.7,而根环境指向2.6?我如何协调这两者


更新2:

好的,只需再转动一下螺钉:

$ sudo pip --version  
pip 1.2.1 from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg (python 2.7)
$ pip --version  
pip 1.0.2 from /Library/Python/2.6/site-packages/pip-1.0.2-py2.6.egg (python 2.6)
因此,我的根指向2.6,但
sudopip--version
指向pip2.7, 虽然我的本地用户指向2.7,但
pip--version
指向pip2.6

???我的大脑开始发热

现在我刚刚安装了sudopip{module},它在2.7中安装正确,但我希望我知道发生了什么


更新3:对内德问题的回答:

$ type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
$ which pip  
/Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
$ sudo bash  
bash-3.2# type pip  
pip is /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  
bash-3.2# echo $PATH  
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin  
bash-3.2# ls -l $(which pip)  
-rwxr-xr-x  1 ykessler  admin  358 Oct  3 15:30 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip  

在我的系统上,我有几个简单的安装:

$ ls /usr/bin/easy_install*
/usr/bin/easy_install       /usr/bin/easy_install-2.5   /usr/bin/easy_install-2.6   /usr/bin/easy_install-2.7
还有几个点子:

$ ls /usr/local/bin/pip*
/usr/local/bin/pip  /usr/local/bin/pip-2.5  /usr/local/bin/pip-2.6  /usr/local/bin/pip-2.7
正如您所说,您的用户环境似乎指向2.7,但系统指向2.6。在我看来,你有两个选择:

  • 您可以使用Apple设置切换系统python版本:
    $defaults write com.Apple.versioner.python version 2.7
    $export versioner\u python\u version=2.7
    。(有关特定OSX版本的更多详细信息,请参阅。)
  • 您可以使用特定于pip-python的版本。(例如:
    pip-2.7

  • 您可能有$PATH问题或权限问题,或者两者都有。试试这个:

    type pip
    echo $PATH
    which pip
    ls -l $(which pip)
    sudo bash
    type pip
    echo $PATH
    ls -l $(which pip)
    
    更新:在这两种情况下,还有一件事需要尝试:

    env | grep PYTHON
    sudo bash
    env | grep PYTHON
    
    然后我将查看
    站点包
    目录的内容:

    cd /Library/Frameworks/Python.framework/Versions/2.7
    cd ./lib/python2.7/site-packages/
    ls -al
    more setuptools.pth
    
    此外:


    什么python列在
    head/Library/Frameworks/python.framework/Versions/2.7/bin/pip
    ?@Martijn:#/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python如果直接运行
    /Library/Frameworks/Python.framework/Versions/2.7/bin/pip--version
    ?您的路径似乎有点混乱,因为它仍然发现Python 2.6版本。@Martijn:正确,直接指向它将显示正确的版本。我只是不确定默认路径如何指向
    上的2.7,而
    上的2.6执行时,是否为
    pip
    定义了shell别名?
    echo$PATH
    在指向Python2.6的
    pip
    的同一个shell中给出了什么?您不能使用
    VERSIONER\u Python\u VERSION
    指向非苹果安装的Python,AFAIK。@neddey-True。但是从上面他的路径名来看,他使用的是苹果安装的2.7 Python。@akraut-不,Ned是对的-我自己安装了Python2.7来与GAE合作,但对我来说不是很多月前。注意,
    /Library/Frameworks/
    不是
    /System/Library/Frameworks
    。苹果在他们的框架bin目录中没有包含类似于
    python-32
    的东西。@arkaut-谢谢你的建议2-假设这会起作用,尽管我最终用
    sudo
    实现了它,但我不明白为什么……在我的问题中,我将结果发布在
    更新3
    下。都指向2.7?不用说,这一切都可以正常工作。但是,在这一点上,通过您采取的各种步骤,如果不详细了解您安装了什么Python、什么easy_安装版本和源代码(setuptools vs Distribute)、什么pip版本、何时使用sudo,就很难判断发生了什么,你的
    网站包
    目录的确切内容是什么,什么环境变量设置有效等等。也许还有一件事需要检查:你有
    ~/.pydistutils.cfg
    文件吗?如果有,它的内容是什么?没有。但今天早上突然,pip指向并安装在2.7中!我真的不知道发生了什么变化,但我非常感谢你的帮助。