pip install numpy的问题 - RuntimeError:Broken toolchain:无法链接一个简单的C程序

时间:2014-03-13 19:06:20

标签: python numpy virtualenv pip

我正在尝试将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

14 个答案:

答案 0 :(得分:72)

虽然它很难看,但似乎有效

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

请注意,如果您为numpy以外的软件包收到此错误,(例如lxml)在提交结束时指定该软件包名称而不是numpy

我看到有人在安装宝石时出现类似的问题

Ruby Gem install Json fails on Mavericks and Xcode 5.1 - unknown argument: '-multiply_definedsuppress'

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

答案 1 :(得分:28)

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

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

答案 2 :(得分:14)

问题是你无法编译。

首先,确保您已使用Xcode接受新的条款和条件。要做到这一点,只需打开xCode并接受。

然后,尝试使用

安装gcc
brew install gcc

最后,尝试使用

安装Numpy
pip install numpy

希望这会有所帮助。

答案 3 :(得分:9)

如果您不想使用sudo(因此权限以及使用venv时保留的权限),您可以将ARCHFLAGS声明添加到.bash_profile,并正常运行。这对我来说适用于Mavericks和Xcode 5.1使用venv:

在〜/ .bash_profile:

  

export ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future

然后,只需运行命令:

  

pip install --upgrade numpy

答案 4 :(得分:5)

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

答案 5 :(得分: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

答案 6 :(得分:4)

如果您正在运行Linux发行版,则可能需要C编译器,特别是如果您看到sh: gcc: command not found这样的告密日志行。您可以按照我在下面概述的here说明进行操作:

  • 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

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:1)

就我而言,这是在docker构建期间发生的。问题在于基本映像没有固定到特定的python版本,numpy无法与新版本一起编译。

FROM python:3-slim  # BAD

将其更改为以下内容后,它会起作用:

FROM python:3.8-slim  # GOOD

记住要修复您的版本! :-)

答案 9 :(得分:0)

上面只在安装了python3-dev之后才对我有用。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

在Fedora 22上,通过更新pip本身解决了这个问题: sudo pip install --upgrade pip

答案 12 :(得分:0)

我通过在我的 Dockerfile 中使用 Conda 而不是 pip 解决了这个问题: FROM continuumio/miniconda3:latest

答案 13 :(得分:0)

旧线程,我的问题是我没有安装 Xcode。下面解决了。

xcode-select --install