无法在Mac OS X 10.10.2中升级Python Six软件包

22
我正在尝试安装最新版本的six Python软件包,但我遇到了以下问题。无法在Mac OSX 10.10.2中摆脱six 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

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


尝试卸载six:pip uninstall six。然后进行安装。 - Craig S. Anderson
似乎pythonpip不属于同一个解释器。请尝试使用python -m pip install --upgrade six。如果这没有帮助,请考虑将which -a pythonwhich -a pip的输出添加到您的问题中。 - cel
@DanielRoseman 不,我没有在虚拟环境中。 - Anish
这是我主要转向Node和NPM的原因之一。这些与Python依赖项有关的问题真是让人头痛。 - Ska
10个回答

24

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

  1. 下载six-1.10.0.tar.gz软件包
  2. 使用以下命令进行安装。

python setup.py install

这能够解决问题,因为它会将新版本的six安装到/Library/Python/2.7/site-packages/目录下,在/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/之前被搜索到。


如果您想保留OS X Python的最干净的解决方案。 - Mic Alexander
这应该是最佳答案。快点。Six Package 1.11.0 链接=> [http://www.linuxfromscratch.org/blfs/view/basic/ch06s08.html] - CHINTAN VADGAMA

17

你的pip二进制文件属于/usr/local/bin/python,而python指向/usr/bin/python。因此

pip install --upgrade six

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

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

python -m pip install --upgrade six

1
你的回答帮了我。我使用的是Mac OS X 10.10.5。 - Miguel Beltran
1
我已经做了更改,但仍然收到相同的错误消息。我使用的是10.11.1版本。 - Raghav
@Raghav,最好是记录下你所做的事情和出现的错误,然后开始一个新的问题,并链接到我的答案。 - cel
1

尝试升级six是目标,显然它是系统包的一部分,这是消息

OSError:[Errno 1]操作不允许:'/var/folders/98/kcksn_cn7619mkjsmlgqt8lc0000gn/T/pip-mSyToD-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

我有相同的规格,--->$ which -a pip ==>/Library/Frameworks/Python.framework/Versions/3.4/bin/pip ===>/usr/local/bin/pip --->$ which -a python ===>/usr/bin/python
- Raghav

16

对我来说,只需使用 Homebrew 就解决了所有问题。

brew install python

16

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

easy_install -U six

即使pip失败,Easy_install仍然成功升级了软件包。


太神奇了。这种东西让我想知道为什么我要用电脑做任何事情。笔和纸有什么不好的吗? - bmcorser
我认为这是在MacOS 10.13.3中对我有效的方法,但它并没有立即生效,我想我只需要重新启动终端。然而,six 1.4.0仍然位于/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python目录下,处于未激活状态。 - Jorge Orpinel Pérez
最终,我使用easy_install安装了依赖于six(awscli)的软件。看起来在Mac OS X上pip install可能存在问题。 - Uncle Long Hair

11

Mac OS X的默认Python被安装为一个框架。 在框架目录下,有一个“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。


另一种解决方案是设置 PYTHONPATH,如 export PYTHONPATH=/Library/Python/2.7/site-packages。在 PYTHONPATH 中指定的所有路径都优先于 OS X 框架 Python 库。 - Masakazu Matsushita
7
这对我有用:python -m pip install --upgrade six。 - roopalgarg
我的Six无法更新,因为我的库中的Caches库没有正确的权限/所有权(根据pip)。@roopalgarg的解决方案对我也起作用了(osx 10.11)。谢谢! - Jos
1
这对我没用...仍然收到相同的错误,无法升级框架包。作为一个新手,我能在哪里找到关于此问题的逐步解决方案吗? 我已安装Python 3以及Python 2.这可能是个问题吗?我在Mac OS X 10.11.1上。 - Raghav

4
我在使用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应用程序)。

等一下,是PYTHONPATH还是PYTHON_PATH? - Ben Wheeler

3

尝试以下步骤

  1. 使用brew重新安装python

    $ brew install python

  2. 解决丢失的符号链接问题

    $ brew link --overwrite python

  3. 重启系统或运行

    $ hash -r python


3

我建议您使用pip2,这对于我来说非常有效。操作步骤如下: pip2 install -U six


1
最终,对我来说问题在于我使用了IPython shell。 which ipython 返回 /usr/local/bin/ipython,检查该文件后发现顶部声明为 #!/usr/bin/python,这似乎绕过了我所有最好的努力以使用正确的python位置。
只需将此行更改为 #!/usr/local/bin/python,指向正确的python版本,然后IPython就会使用正确的six模块。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接