为什么pip不能更新我的numpy和scipy?

Spa*_*cey 12 python macos numpy pip package-managers

我的问题是pip不会更新我的Python包,即使没有错误.

它与类似,但我现在仍然确定该怎么做.基本上,即使在通过pip更新所有内容之后,我的所有python包都显得过时了.以下是详细信息:

  • 我正在使用pip,版本1.5.6.
  • 我使用的是Python 2.7.5版
  • 我在Mac OSX上,版本10.9.5.

使用它,我有:

  • 我的numpy版本是1.6.2.
  • 我的scipy版本是0.11.0.
  • 我的matplotlib版本是1.1.1.

即便在我尝试之后:

sudo pip uninstall numpy
Run Code Online (Sandbox Code Playgroud)

其次是:

sudo pip install numpy
Run Code Online (Sandbox Code Playgroud)

它们都成功完成,但是当我进入python并检查numpy的版本时,它仍然是旧版本.(和所有其他包一样).

不确定这里发生了什么?......如何解决这个问题?PS我是新手,所以我可能需要明确的指示.谢谢.此外,如果有人想要,我可以提供pip的屏幕截图,因为它正在安装numpy.

编辑:

我根据评论运行的命令:

$which -a pip
/usr/local/bin/pip
$ head -1 $(which pip)
#!/usr/bin/python
$ which -a python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 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仍然认为苹果的副本.我不确定为什么会这样,但它可能不是你想要的东西.


那么,你如何解决这个问题呢?

两个最佳解决方案是:

  • 使用virtualenv并将您numpy和朋友安装到虚拟环境中,而不是系统范围内.这有一个缺点,你必须学习如何使用virtualenv- 但这在某些时候绝对值得做,如果你有时间现在学习它,那就去吧.

  • 从python.org安装程序或Homebrew升级到Python 3.x. Python 3.4或更高版本附带pip,并没有任何pip不友好的预安装包.并且,与安装单独的2.7不同,它根本不会干扰Apple的Python; python3并且python,pip3pip等,都将是单独的程序,而不必了解PATH如何工作或任何的事情.这有一个缺点,你必须学习Python 3.x,它有一些重大的变化,所以再次,一点学习曲线,但再次,绝对值得在某一点做.


假设这些都不可能,我认为最简单的选择是使用easy_install而不是为pip你想安装任何Apple的"额外"的新版本的软件包.你可以通过查看内容来获得完整的列表/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python.当你升级numpy,你可能还需要升级scipymatplotlib; 我认为其他一切都是无关紧要的.(你当然可以升级PyObjC或者dateutil你关心的任何其他事情,但你不必这样做.)

这不是一个理想的解决方案; 有很多的原因,easy_install不如pip(例如,没有卸载程序,所以你不得不记住的是/Library/blah/blah路径(或打印出来再次找到它sys.path从内Python)的.通常我不会建议easy_install对除了readlinepip它本身的任何东西(然后只有苹果的Python).但在这种情况下,我认为它比其他替代品更简单.