pip安装numpy的问题-RuntimeError:断开的工具链:无法链接简单的C程序


93

我正在尝试将numpy(以及scipy和matplotlib)安装到virturalenv中。

我仍然收到这些错误:

RuntimeError: Broken toolchain: cannot link a simple C program

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1

我已经安装了用于xcode的命令行工具

$ which gcc
/usr/bin/gcc
$ which cc
/usr/bin/cc

我在Mac OSX 10.9上使用Brew安装的python

编辑
是,尝试使用pip安装。
整个回溯是巨大的(> 400行)

这是其中的一部分:

C compiler: cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe



compile options: '-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -Inumpy/core/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c'

cc: _configtest.c

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

failure.

removing: _configtest.c _configtest.o

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/setup.py", line 192, in <module>

    setup_package()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/setup.py", line 185, in setup_package

    configuration=configuration )

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/core.py", line 169, in setup

    return old_setup(**new_attr)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup

    dist.run_commands()

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands

    self.run_command(cmd)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/egg_info.py", line 10, in run

    self.run_command("build_src")

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command

    self.distribution.run_command(command)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 153, in run

    self.build_sources()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 164, in build_sources

    self.build_library_sources(*libname_info)

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 299, in build_library_sources

    sources = self.generate_sources(sources, (lib_name, build_info))

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 386, in generate_sources

    source = func(extension, build_dir)

  File "numpy/core/setup.py", line 674, in get_mathlib_info

    raise RuntimeError("Broken toolchain: cannot link a simple C program")

RuntimeError: Broken toolchain: cannot link a simple C program

1
请显示该行上方的几RuntimeError行,以便我们查看哪些命令失败。另外,您是通过安装pip还是通过直接构建源安装?
MattDMo 2014年

罗杰,现在编辑
2014年

大声笑@“无法链接简单的C程序”。真该死!
卡梅伦·哈德森

Answers:


77

虽然很丑陋,但似乎可以使用

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install --upgrade numpy

请注意,如果对于除numpy之外的其他软件包(例如lxml)遇到此错误,请指定该软件包名称,而不要numpy在commnd的末尾。

我看到有人在安装gem时遇到类似的问题

Ruby Gem安装Json在Mavericks和Xcode 5.1上失败-未知参数:'-multiply_definedsuppress'

这只是临时修复,在某些时候必须修复编译器选项


1
@Ben:FWIW,我有同样的问题(不使用brew)。它在将Xcode更新为5.1之后出现。无论如何丑陋,这似乎是答案(暂时)。
orome 2014年

2
XCode 5.1发行说明中有一个解释。
badzil 2014年

是否unused-command-line-argument-hard-error-in-future还需要与约塞米蒂下最新的Xcode?没有它,事情似乎就起作用了(至少对于我已经厌倦的软件包而言)。
orome 2014年

82

对于Docker(Alpine)和Python 3.x,这对我有用:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev

13
对于使用docker python3高山映像的任何人,这都是解决方案。
xssChauhan

3
我需要apk update第一时间,否则我会收到一条ERROR: unsatisfiable constraints消息。
yair

非常感谢!
非晶

这也是docker python2 alpine映像的解决方案。
爱德华

3
我只能gcc g++ make python3-dev在numpy / nmslib 上在高山上执行此操作。导致此特定问题的原因似乎是缺少c ++编译器g++(它通过错误查找gccmake已安装)。numpy构建的其他重要部分是随附的python3标头python3-dev
ThisGuyCantEven

15

问题是您无法编译。

首先,请确保您已接受Xcode的新条款。为此,只需打开xCode并接受即可。

然后,尝试使用安装gcc

brew install gcc

最后,尝试使用安装Numpy

pip install numpy

希望这可以帮助。


这对我有用。问题是我没有打开xcode并接受条款和条件。
Stephens

9

如果您不想使用sudo(因此,使用venv时会保留权限和类似内容),则可以将ARCHFLAGS声明添加到.bash_profile中,然后按常规运行。这与venv一起用于Mavericks和Xcode 5.1:

在〜/ .bash_profile中:

导出ARCHFLAGS = -Wno-error =未使用的命令行参数-未来的硬错误

然后,只需运行以下命令:

点安装--upgrade numpy


4
sudo以上为全系统的安装,可以在没有在运行的virtualenv
二连而且Güven

5

我只需要打开XCode并接受协议,然后让它安装工具即可。然后,我回到PyCharm并再次安装numpy,没有任何问题。


5

如果您正在运行linux发行版,则可能需要C编译器,尤其是如果看到诸如的告诉日志行sh: gcc: command not found。您可以按照此处的说明进行操作,下面对我进行了总结:

  • Fedora,Red Hat,CentOS或Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian或Ubuntu Linux

    $ sudo apt-get update $ sudo apt-get install build-essential manpages-dev

然后,您可以尝试重新运行:

sudo pip install numpy

4

对于遇到类似问题的fedora用户,请尝试安装以下软件包:

(如果不使用python3,请使用python-devel和pip代替pip3)

sudo dnf install python3-devel
sudo dnf install make automake gcc gcc-c++ gcc-gfortran
sudo dnf install redhat-rpm-config
sudo dnf install subversion

然后尝试

sudo pip3 install numpy

2

在某些情况下,OS X升级XCode之后,XCode将要求用户(具有管理特权)接受新许可证。在接受许可证之前,clang和gcc在尝试编译和链接代码时将发出错误。或至少是python软件包。

如果启动XCode并接受许可证,则错误不再出现。

至少,对我来说就是这种情况。


1

这意味着它找不到您的C编译器。如果链接其他编译器失败,请尝试安装gcc编译器。



0

在Fedora 22上,这是通过更新pip本身解决的: sudo pip install --upgrade pip

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.