我的问题是pip不会更新我的Python包,即使没有错误。
它类似于this one,但我现在仍然确定要做什么。基本上,即使在通过pip更新所有内容之后,我的所有python包都显得过时了。以下是详细信息:
使用它,我有:
即使在我尝试之后:
sudo pip uninstall numpy
其次是:
sudo pip install numpy
它们都成功完成,但是当我进入python并检查numpy的版本时,它仍然是旧版本。 (和所有其他包一样)。
不确定这里发生了什么?......如何解决这个问题?附:我是新手,所以我可能需要明确的指示。谢谢。此外,如果有人想要,我可以提供pip的屏幕截图,因为它正在安装numpy。
修改
我根据评论运行的命令:
$which -a pip
/usr/local/bin/pip
$ head -1 $(which pip)
#!/usr/bin/python
$ which -a python
/usr/bin/python
答案 0 :(得分:14)
在OS X 10.9中,Apple的Python附带了一堆预先安装的额外软件包,位于名为/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
的目录中。包括numpy
。
他们的安装方式(就像使用easy_install
使用古老的0.7之前版本的setuptools
,但不是正常的easy_install
目的地之一) ,pip
对它们一无所知。
因此,sudo pip install numpy
将numpy
的单独副本安装到'/Library/Python/2.7/site-packages'
中会发生什么 - 但在sys.path
中,Extras
目录位于site-packages
之前import numpy
目录,因此numpy
仍然可以找到Apple的副本。我不确定为什么会这样,但它可能不是你想要的东西。
那么,你如何解决这个问题?
两个最佳解决方案是:
使用virtualenv
,将您的virtualenv
和朋友安装到虚拟环境中,而不是系统范围内。这有一个缺点,你必须学习如何使用pip
- 但这在某些时候绝对值得做,如果你现在有时间学习它,那就去吧。
从python.org安装程序或Homebrew升级到Python 3.x. Python 3.4或更高版本附带pip
,并且没有任何python3
- 不友好的预安装软件包。并且,与安装单独的2.7不同,它根本不会干扰Apple的Python; python
和pip3
,pip
和easy_install
等都将是单独的程序,您不必了解PATH的工作原理或任何内容那个。这有一个缺点,你必须学习Python 3.x,它有some major changes,所以再次,一点学习曲线,但同样,在某些时候绝对值得做。
假设这些都不可能,我认为最简单的选择是使用pip
代替/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
,对于要安装任何Apple&#39的新版本的软件包&# 34;额外&#34 ;.您可以通过查看numpy
中的内容来获取这些内容的完整列表。升级scipy
时,您可能还想升级matplotlib
和PyObjC
;我认为其他一切都是无关紧要的。 (您当然可以升级dateutil
或easy_install
或其他任何您关心的内容,但您不必这样做。)
这不是一个理想的解决方案;有很多原因pip
不如/Library/blah/blah
(例如,没有卸载程序,因此您必须记住sys.path
路径所在的位置(或找到它再次从Python内部打印出来easy_install
。除了readline
和pip
本身之外,我通常不会建议{{1}}(然后只有Apple&# 39; s Python)。但在这种情况下,我认为它比其他替代方案更简单。
答案 1 :(得分:4)
老问题,但我在尝试解决这个问题时发现它,会发布我的解决方案。
我发现@ abarnert的诊断是正确和有用的,但我不喜欢任何解决方案:我真的想升级numpy的默认版本。挑战在于这些人所在的目录(@abarnert提到的)甚至不能被sudo
触及,因为他们在这个“轮子”组中。事实上,如果你去那里做sudo rm -rf blah
,它会给你一个拒绝许可的错误。
为了解决这个问题,我们必须采取激烈的行动:
csrutil disable
pip2 install --user --upgrade numpy
升级numpy(对于出现此问题的其他任何软件包也一样)注意:“csrutil disable”是一项严重的业务,可能会破坏您的机器的稳定性,我会在绝对必要时使用它并尽快重新启用它。但是AFAIK是在滚轮目录中升级Python包的唯一方法。
答案 2 :(得分:2)
重命名Apple在/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/中安装的numpy和scipy版本,以便它开始使用Pip安装的较新版本。