【问题标题】:Problems with pip install numpy - RuntimeError: Broken toolchain: cannot link a simple C programpip install numpy 的问题 - RuntimeError: Broken toolchain: cannot link a simple C program
【发布时间】:2014-04-18 18:30:55
【问题描述】:

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

【问题讨论】:

  • 请在RuntimeError 行上方显示几行,以便我们查看哪些命令失败。另外,您是通过pip 安装还是直接构建源代码?
  • 罗杰那个,现在编辑
  • 大声笑@“无法链接简单的 C 程序”。这么牛逼!

标签: python numpy virtualenv pip


【解决方案1】:

老线程,我的问题是我没有安装 Xcode。以下解决了它。

xcode-select --install

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      FROM python:3-slim  # BAD
      

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

      FROM python:3.8-slim  # GOOD
      

      记得修复你的版本! :-)

      【讨论】:

      • 今天我也遇到了同样的事情。看起来他们在 3.9.0 中删除了 c 编译器 + 相关的 make 实用程序。
      【解决方案4】:

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

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

      【讨论】:

      • 对于任何使用 docker python3 alpine 映像的人,这就是解决方案。
      • 我首先需要apk update,否则我会收到ERROR: unsatisfiable constraints 消息。
      • 非常感谢!
      • 这也是docker python2 alpine镜像的解决方案。
      • 我能够在 alpine 上使用 numpy/nmslib 仅使用 gcc g++ make python3-dev 进行此操作。这个特定问题的原因似乎是缺少 c++ 编译器 g++(它看起来已经安装了 gccmake 的错误)。 numpy 构建的其他重要部分是 python3-dev 附带的 python3 标头。
      【解决方案5】:

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

      【讨论】:

      • 同样的解决方案适用于 Big Sur 上的 MacOS 问题
      【解决方案6】:

      如果您运行的是 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】:

        对于遇到类似问题的 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
        

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

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

            至少,我是这样的。

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                【解决方案11】:

                问题是你无法编译。

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

                然后,尝试使用

                安装 gcc
                brew install gcc
                

                最后,尝试用

                安装 Numpy
                pip install numpy
                

                希望这会有所帮助。

                【讨论】:

                • 这对我有用。问题是我没有打开 xcode 并接受条款和条件。
                • 对于那些运行 Big Sur Beta 的用户:(1) 下载并安装 Command Line Tools for Xcode 12.2 beta 3 (2) 在终端类型 sudo xcode-select --switch /Library/Developer/CommandLineTools (3) brew install gcc (4) @ 987654326@
                【解决方案12】:

                以上方法仅在安装 python3-dev 后对我有用。

                【讨论】:

                  【解决方案13】:

                  虽然丑陋,但似乎可以工作

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

                  请注意,如果您对 numpy 以外的包(例如 lxml)收到此错误,请在命令末尾指定该包名称而不是 numpy

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

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

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

                  【讨论】:

                  • @Ben:FWIW,我有同样的问题(不使用 brew)。它是在将 Xcode 更新到 5.1 后出现的。不管多么丑陋,这似乎是答案(目前)。
                  • XCode 5.1 release notes中有解释。
                  • Yosemite 下最新的 Xcode 还需要unused-command-line-argument-hard-error-in-future 吗?没有它,一切似乎都有效(至少对于我已经厌倦的包裹)。
                  • 有人有windows解决方案吗?
                  【解决方案14】:

                  如果您不想使用 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 的情况下运行
                  猜你喜欢
                  • 2015-03-01
                  • 2018-06-12
                  • 2019-09-18
                  • 1970-01-01
                  • 2014-06-19
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-07-18
                  相关资源
                  最近更新 更多