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

Ben*_*Ben 75 python numpy pip virtualenv

我正在尝试将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
Run Code Online (Sandbox Code Playgroud)

我安装了xcode的命令行工具

$ which gcc
/usr/bin/gcc
$ which cc
/usr/bin/cc
Run Code Online (Sandbox Code Playgroud)

我在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
Run Code Online (Sandbox Code Playgroud)

小智 73

虽然很难看,但似乎有效

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install --upgrade numpy
Run Code Online (Sandbox Code Playgroud)

请注意,如果您为numpy以外的程序包收到此错误(例如lxml),请指定该程序包名称而不是numpy在该程序的结尾处.

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

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

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

  • 有在[5.1 XCode的发布说明]的说明(https://developer.apple.com/library/ios/releasenotes/developertools/rn-xcode/xc5_release_notes/xc5_release_notes.html#//apple_ref/doc/uid/TP40001051 -CH2-SW12). (2认同)

小智 46

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

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev
Run Code Online (Sandbox Code Playgroud)

  • 我能够在 alpine 上仅使用 numpy/nmslib 的“gcc g++ make python3-dev”来完成此操作。这个特定问题的原因似乎是缺少 c++ 编译器“g++”(从错误看来“gcc”和“make”已经安装)。“numpy”构建的其他重要部分是“python3-dev”附带的 python3 标头。 (7认同)
  • 对于任何使用docker python3 alpine图像的人来说,这就是解决方案. (4认同)
  • 首先需要“ apk更新”,否则会收到“错误:约束无法满足”消息。 (2认同)
  • 不确定“颠覆”是否必要。官方 Python docker 基于 `buildpack-deps`,其中未列出 subversion。 (2认同)

小智 15

问题是你无法编译.

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

然后,尝试安装gcc

brew install gcc
Run Code Online (Sandbox Code Playgroud)

最后,尝试安装Numpy

pip install numpy
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 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

  • 上面的`sudo`用于系统范围的安装,可以在没有virtualenv的情况下运行 (4认同)

小智 6

如果您运行的是 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
Run Code Online (Sandbox Code Playgroud)


MoR*_*oRe 6

就我而言,这发生在 docker 构建期间。问题是基础镜像没有固定到特定的 python 版本,并且 numpy 无法使用新版本进行编译。

FROM python:3-slim  # BAD
Run Code Online (Sandbox Code Playgroud)

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

FROM python:3.8-slim  # GOOD
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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


zen*_*ttu 5

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