无法升级 python mac osx 10.10.2 中的六个包

Unable to upgrade python six package in mac osx 10.10.2

我正在尝试安装六个 python 软件包的最新版本,但我遇到了以下问题。 mac OSX 10.10.2

中的6个1.4.1无法去掉
sudo pip install six --upgrade
Requirement already up-to-date: six in /Library/Python/2.7/site-packages
Cleaning up...

pip search six
six - Python 2 and 3 compatibility utilities
INSTALLED: 1.9.0 (latest)

python -c "import six; print six.version"
1.4.1

which -a python
/usr/bin/python
which -a pip
/usr/local/bin/pip

这里有什么问题?无法升级六!

您的 pip 二进制文件属于 /usr/local/bin/python,而 python 指向 /usr/bin/python。结果

pip install --upgrade six

将安装到 /usr/local/bin/python

下面的命令将确保使用正确版本的 pip:

python -m pip install --upgrade six

Mac OS X 的默认 python 作为框架安装。 framework目录下有一个'Extras'目录,里面已经放了six

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py

根据描述(https://github.com/MacPython/wiki/wiki/Which-Python),/System/Library/Frameworks/Python.framework/Versions/2.7/Extras在模块搜索路径中列在/Library/Python/2.7/site-packages之前。 这意味着 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras 中已经存在的所有包都无法升级。

也许你应该手动安装 python 而不是使用默认的 python。

对我来说,只需使用 homebrew 就可以解决所有问题。

brew install python

我在使用 pip 安装 openstack 客户端时遇到了这个问题。我的修复是使用 easy_install 而不是 pip,因为它使用 /Library/Python/2.7/site-packages/ 而不是 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras 进行模块安装。如果此解决方法不适合您,那么我可以确认@Masakazu Matsushita 具有将 PYTHONPATH 设置为 /Library/Python/2.7/site-packages 的正确解决方法。要实施该解决方法,请添加此行:

export PYTHON_PATH=/Library/Python/2.7/site-packages

到您的 ~/.bashrc~/.profile(如果它是您尝试安装的 GUI Python 应用程序)。

虽然上述一种或另一种解决方案可能适合您,但我认为了解正在发生的事情以及您有哪些选择很重要。我发现 this(相当冗长)描述非常有用:它从概述选项开始,然后才提出解决方案。

试试这些步骤

  1. 使用 brew

    重新安装 python

    $ brew install python

  2. 解决缺少符号链接问题

    $ brew link --overwrite python

  3. 重启系统或运行

    $ hash -r python

我通过以下方法解决了问题。

  1. 下载 six-1.10.0.tar.gz 包
  2. 使用此命令安装它。

python setup.py install

这是有效的,因为它将新版本的 6 安装到 /Library/Python/2.7/site-packages/,它在 [=28 之前搜索=].framework/Versions/2.7/Extras/lib/python/

对我有用的是使用 easy_install 而不是 pip

easy_install -U six

Easy_install 即使 pip 失败也设法升级包。

最后,我的问题是我使用的是 IPython shell。

which ipython 返回 /usr/local/bin/ipython 并在检查时在顶部声明了此文件 #!/usr/bin/python,这似乎是在规避我使用正确 python 位置的所有最大努力.

只需更改此行 #!/usr/local/bin/python 以指向正确的 python 版本就意味着 IPython 使用了正确的 six 模块。

尝试使用 pip2 它对我有用 pip2 安装-U 六