Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不是';t pip更新我的numpy和scipy?_Python_Macos_Numpy_Pip_Package Managers - Fatal编程技术网

Python 为什么不是';t pip更新我的numpy和scipy?

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也不会更新我的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 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
    ,并且没有任何
    pip
    ——不友好的预装包。而且,与安装单独的2.7不同,它根本不会干扰苹果的Python
    python3
    python
    pip3
    pip
    等都是独立的程序,您不必了解路径的工作原理或任何其他内容。这有一个缺点,那就是你必须学习Python3.x,它有一点学习曲线,但在某个时候确实值得去做


假设这两个都不可能,我认为最简单的选择是使用
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(对于存在此问题的任何其他软件包也是如此)
  • 重复步骤a和b,这次将“禁用”更改为“启用”

  • 注:“csrutil禁用”这是一项严重的业务,可能会破坏您的计算机的稳定性,我只会在绝对必要时使用它,并尽快重新启用它。但是,看来这是升级轮子目录中Python包的唯一方法。

    您有多个
    Python
    安装,并且您的
    pip
    绑定到另一个。如果您不确定是否在Apple的旁边安装了一个额外的Python,运行以下所有命令并显示输出:
    which-a pip
    head-1$(which pip)
    which-a Python