【问题标题】:Exception Error when Installing NumPy with pip使用 pip 安装 NumPy 时出现异常错误
【发布时间】:2015-06-30 16:58:04
【问题描述】:

我一直在尝试安装 NumPy,并且一直在使用它。无论我尝试什么,我都会不断收到异常错误。我用了命令

$pip install numpy

但它抛出了这个错误

    Exception:
  Traceback (most recent call last):
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/basecommand.py", line 246, in main
      status = self.run(options, args)
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/commands/install.py", line 352, in run
      root=options.root_path,
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/req/req_set.py", line 693, in install
      **kwargs
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/req/req_install.py", line 817, in install
      self.move_wheel_files(self.source_dir, root=root)
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/req/req_install.py", line 1018, in move_wheel_files
      isolated=self.isolated,
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/wheel.py", line 269, in move_wheel_files
      clobber(source, dest, False, fixer=fixer, filter=filter)
    File "/Library/Python/2.7/site-packages/pip-6.1.1-py2.7.egg/pip/wheel.py", line 215, in clobber
      shutil.copyfile(srcfile, destfile)
    File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile
      with open(dst, 'wb') as fdst:
  IOError: [Errno 13] Permission denied: '/usr/local/man/man1/nosetests.1'

只是为了检查,我在 Python 中使用了 import 来查看它是否有任何东西,但它也抛出了一个错误。我不知道发生了什么。

$pip install scipy

没有给我带来任何问题。任何帮助表示赞赏!我似乎找不到任何有关如何解决此问题的信息。

谢谢!

【问题讨论】:

  • 看起来它试图全局安装,所以你需要权限,或者使用 virtualenv 创建虚拟存储,在那里你可以毫无问题地安装 numpy。正是在您的情况下,它说它无法将文件复制到/usr/local/man/man1/nosetests.1
  • 好的。我将如何获得它的权限? sudo 会做正确的事吗?我还应该提到,当我再次尝试运行 pip 时,它告诉我 numpy 已经安装并且是最新的。
  • 是的,sudo 可以帮助您。或者,如果您全局不需要它,请尝试创建一个virtualenv
  • 尝试用 sudo 运行它告诉我与第二次运行它时相同,它已经安装并且是最新的。我确实需要它。
  • 在他们之后尝试pip uninstall numpysudo install numpy

标签: python numpy installation pip


【解决方案1】:

只需以管理员身份运行 cmd 即可。

【讨论】:

    【解决方案2】:

    Homebrew 试图让 /usr/local 可写,所以你不需要sudoSee the FAQ for details.

    但是,如果您不小心使用了一次 sudo,或者如果您运行的其他安装程序将某些内容安装到 /usr/local 中,而您并没有意识到您想要 Homebrew 风格,那么您将开始收到错误,当您的 Homebrew东西试图修改用sudo保存的文件。

    如果您尝试同时使用 Apple 预装的 Python 2.7 和 Homebrew Python 2.7,则会出现一个特殊问题:它们都希望将脚本安装到 /usr/local/bin,将手册页安装到 /usr/local/man,等等。而 Apple 想要使用须藤。

    因此,很可能,您过去曾为 Apple 的 Python 执行过 sudo pip install nose,而现在 Homebrew 的 Python 的 pip install nose 正试图覆盖其文件并且没有这样做的权限。 (或者可能不是 nose 本身,而是其他需要 nose 而你没有意识到的东西。)

    在 Homebrew Python 中使用 sudo 只会让问题变得更糟;不要那样做。

    正确的解决方案是:

    • 不使用第三方 Python 2.7、Homebrew 或其他,只使用 Apple 的(或升级到 Python 3;然后通常不会与 Apple 的 2.7 冲突……),或
    • 永远不要接触 Apple 的 Python 2.7,而只能使用另一个。

    但是在这一点上,你已经搞砸了,我怀疑你想从头开始重新安装你的操作系统,对吧?

    对于前者,您可以通过brew uninstall python 来修复问题,对于后者,您可以卸载您使用 Apple Python 安装的所有内容。 (您不能卸载 Apple 的 Python;这会破坏操作系统,并且下一次操作系统更新无论如何都会撤消它……)然后,无论哪种方式,您可能都想重新安装您选择的任何 Python 所需的每个包一起去吧,为了安全起见。

    或者,对于一个快速&肮脏的解决方案,每次遇到这样的错误时,您可以删除冲突文件(sudo rm /usr/local/man/man1/nosetests.1)或使其可覆盖(sudo chmod a+w /usr/local/man/man1/nosetests.1);然后,您的 pip 将起作用。直到下一个错误,你可以用同样的方法修复它。

    【讨论】:

    • 好的。有没有一种简单的方法可以清理我所有添加的东西并在不重建的情况下从头开始?我需要的大多数东西都井井有条,所以重建不会是世界末日。我猜想只是试图从不同的来源加载不同的包,我已经在整个地方制造了问题。回到从头开始最简单的方法是什么?谢谢!
    • @Grimey:你想以哪种方式结束? Apple 站点包和没有 Homebrew,或 Homebrew 站点包和空的 Apple 站点包?第一个更简单,但如果不是您想要的,那也无济于事……另外,您是否安装过任何没有pip 的软件包(或者您不知道答案)?
    • 我确实尝试过安装软件包。我对 Python 还是很陌生,所以我尝试过以多种不同的方式安装包。回想起来,应该更多地阅读它。在我看来,自制软件很有用,并且有很多有用的软件包。也许这将是最好的方法?你会建议哪个?我很冷漠。
    • 首先,对于安装程序和共享库,Homebrew 绝对是要走的路,即使你不将它用于 Python 本身。至于使用哪个 Python……好吧,我会说学习 Python 3,然后将 Apple 的作为您很少使用的唯一 2.7,然后从 python.org 或 Homebrew 安装 3.4。如果你不能这样做,我个人认为坚持使用 Apple 的 Python 2.7 会更容易,但很多人不同意。 (我写了a blog post a couple years ago explaining why。)
    • @Grimey:或者,既然您要安装 NumPy 和 SciPy……您是否考虑过使用 Python+extras 的科学发行版之一,例如 Enthought 或 PythonXY? (也许不是这两个特别——我认为第一个是非免费的,第二个还不能在 Mac 上工作——但还有其他的。)这不仅能让你得到 NumPy 和 SciPy,而且还能得到 Qt(这是很多设置起来更痛苦)和其他东西,其中一些具有独立的包管理......