Python 为什么不是';t pip更新我的numpy和scipy?
我的问题是,即使没有错误,pip也不会更新我的Python包 类似于,但我现在仍然确定该怎么做。基本上,我所有的python包看起来都过时得可笑,即使是在通过pip更新了所有内容之后。详情如下:Python 为什么不是';t pip更新我的numpy和scipy?,python,macos,numpy,pip,package-managers,Python,Macos,Numpy,Pip,Package Managers,我的问题是,即使没有错误,pip也不会更新我的Python包 类似于,但我现在仍然确定该怎么做。基本上,我所有的python包看起来都过时得可笑,即使是在通过pip更新了所有内容之后。详情如下: 我正在使用pip,版本1.5.6 我正在使用Python,版本2.7.5 我使用的是Mac OSX,verion 10.9.5 利用这一点,我有: 我的numpy版本是1.6.2 我的scipy版本是0.11.0 我的matplotlib版本是1.1.1 即使在我尝试之后: sudo pip u
- 我正在使用pip,版本1.5.6李>
- 我正在使用Python,版本2.7.5
- 我使用的是Mac OSX,verion 10.9.5
- 我的numpy版本是1.6.2
- 我的scipy版本是0.11.0
- 我的matplotlib版本是1.1.1
sudo pip uninstall numpy
其次是:
sudo pip install numpy
它们都成功地完成了,但是当我进入python并检查numpy的版本时,它仍然是旧版本。(与所有其他包一样)
不知道这是怎么回事?。。。如何解决这个问题?另外,我是新手,所以我可能需要明确的指示。谢谢另外,如果有人愿意,我可以提供安装numpy时pip的屏幕截图
编辑:
我根据注释运行的命令:
$which -a pip
/usr/local/bin/pip
$ head -1 $(which pip)
#!/usr/bin/python
$ which -a python
/usr/bin/python
在OS X 10.9中,苹果的Python附带了一系列预先安装的额外软件包,位于名为
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/Python
的目录中。包括numpy
而它们的安装方式(就像使用easy\u install
和一个古老的setuptools
0.7之前的版本,但不进入任何一个正常的easy\u install
目的地),pip
对它们一无所知
因此,sudo-pip-install-numpy
将numpy
的一个单独副本安装到'/Library/Python/2.7/site-packages'
-但是在你的sys.path
中,Extras
目录在site-packages
目录之前,所以import-numpy
仍然可以找到苹果的副本。我不知道这是为什么,但这可能不是你想戏弄的东西
那么,你如何解决这个问题 两个最佳解决方案是:
- 使用并将您的
和朋友安装到虚拟环境中,而不是整个系统。这有一个缺点,那就是你必须学习如何使用numpy
——但在某个时候,这绝对是值得的,如果你现在有时间学习,那就去学吧virtualenv
- 从Python.org安装程序或通过自制程序升级到Python 3.x。Python 3.4或更高版本附带了
,并且没有任何pip
——不友好的预装包。而且,与安装单独的2.7不同,它根本不会干扰苹果的Pythonpip
和python3
,python
和pip3
等都是独立的程序,您不必了解路径的工作原理或任何其他内容。这有一个缺点,那就是你必须学习Python3.x,它有一点学习曲线,但在某个时候确实值得去做pip
假设这两个都不可能,我认为最简单的选择是使用
easy_install
而不是pip
,用于您想要安装任何苹果“附加软件”更新版本的软件包。通过查看/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/Python
中的内容,您可以获得这些内容的完整列表。升级numpy
时,可能还需要升级scipy
和matplotlib
;我认为其他一切都是无关的。(当然,您可以升级PyObjC
或dateutil
或任何您关心的东西,但不必升级。)
这不是一个理想的解决方案;有很多原因表明,
easy\u install
不如pip
(例如,没有卸载程序,所以您必须记住/Library/blah/blah
路径在哪里(或者从Python内部打印出sys.path
来再次找到它)。我通常不会建议对任何东西进行easy\u install
,除了readline
和pip
本身(然后只使用苹果的Python)。但在这种情况下,我认为它比其他替代方案更简单。在/System/Library/Frameworks/Python.framework/versions/2.7/Extras/lib/Python/中重命名Apple安装的numpy和scipy版本。因此,它开始使用由Pip安装的较新版本。旧问题,但我在试图解决此问题时发现,将发布我的so粘连
我发现@abarnert的诊断是正确和有用的,但我不喜欢任何解决方案:我真的想升级numpy的默认版本。挑战是这些家伙所在的目录(@abarnert提到的目录)甚至不能被sudo
触及,因为他们在这个“轮子”中事实上,如果你去那里做sudorm-rfblah
,它会给你一个权限拒绝错误
为了解决这个问题,我们必须采取激烈的行动:
csrutil disable
pip2安装--user--upgrade numpy
升级numpy(对于存在此问题的任何其他软件包也是如此)注:“csrutil禁用”这是一项严重的业务,可能会破坏您的计算机的稳定性,我只会在绝对必要时使用它,并尽快重新启用它。但是,看来这是升级轮子目录中Python包的唯一方法。您有多个
Python
安装,并且您的pip
绑定到另一个。如果您不确定是否在Apple的旁边安装了一个额外的Python,运行以下所有命令并显示输出:which-a pip
,head-1$(which pip)
,which-a Python