Problemas con la instalación de pip numpy - RuntimeError: cadena de herramientas rota: no se puede vincular un programa C simple

98

Estoy intentando instalar numpy (y scipy y matplotlib) en un virturalenv.

Sin embargo, sigo recibiendo estos errores:

RuntimeError: Broken toolchain: cannot link a simple C program

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

Tengo las herramientas de línea de comando para xcode instaladas

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

Estoy en Mac OSX 10.9 usando un brew instalado Python

Editar
Sí, intentando instalar con pip.
Todo el rastreo es enorme (> 400 líneas)

Aquí hay una sección del mismo:

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
Ben
fuente
1
muestre varias de las líneas sobre la RuntimeErrorlínea para que podamos ver qué comandos fallan. Además, ¿está instalando a través pipo construyendo la fuente directamente?
MattDMo
Rodger eso, editado ahora
Ben
Lol @ "no se puede vincular un programa C simple". ¡Qué descaro!
Cameron Hudson

Respuestas:

77

Si bien es feo, parece funcionar

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

Tenga en cuenta que si recibe este error para un paquete que no sea numpy, (como lxml) especifique ese nombre de paquete en lugar de numpyal final del comando.

Vi un problema similar que alguien estaba teniendo al instalar una gema

Ruby Gem install Json falla en Mavericks y Xcode 5.1 - argumento desconocido: '-multiply_definedsuppress'

Esto es solo una solución temporal, en algún momento las opciones del compilador tendrán que arreglarse

Derrick Shoemake
fuente
1
@Ben: FWIW, tengo el mismo problema (no uso brew). Apareció después de actualizar Xcode a 5.1. Por muy feo que sea, esta parece ser la respuesta (por ahora).
Orome
2
Hay una explicación en las notas de la versión de XCode 5.1 .
badzil
¿ unused-command-line-argument-hard-error-in-futureSigue siendo necesario con el último Xcode en Yosemite? Las cosas parecen funcionar (al menos para los paquetes que me he cansado) sin él.
orome
¿Alguien tiene una solución de Windows?
Zack Plauché
90

Para Docker (Alpine) y Python 3.x esto funcionó para mí:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev
Willem Bressers
fuente
15
Para cualquiera que use la imagen alpina de docker python3, esta es la solución.
xssChauhan
4
Necesitaba una apk updateprimera, de lo contrario recibí un ERROR: unsatisfiable constraintsmensaje.
yair
Muchas gracias!
Amorfo
Esta es también la solución para la imagen alpina de docker python2.
Eduard
4
Pude hacer esto en alpine con solo gcc g++ make python3-devpara numpy / nmslib. La causa de este problema en particular parece ser el compilador de c ++ que falta g++(parece por el error que gccy makeya están instalados). Las otras partes importantes de la numpycompilación son los encabezados de python3 que vienen con python3-dev.
ThisGuyCantEven
16

El problema es que no puede compilar.

Primero, asegúrese de haber aceptado los nuevos Términos y Condiciones con Xcode. Para hacer esto, simplemente abra xCode y acepte.

Luego, intente instalar gcc con

brew install gcc

Finalmente, intente instalar Numpy con

pip install numpy

Espero que esto ayude.

Desmond
fuente
esto funcionó para mí. El problema fue que no abrí xcode y acepté los términos y condiciones.
Stephens
Para aquellos que ejecutan Big Sur Beta : (1) descargue e instale las herramientas de línea de comandos para Xcode 12.2 beta 3 (2) en el tipo de terminal sudo xcode-select --switch /Library/Developer/CommandLineTools(3) brew install gcc(4)pip install numpy
Felipe
9

Si no desea usar sudo (por lo que los permisos y cosas por el estilo se conservan al usar venv), puede agregar la declaración ARCHFLAGS a su .bash_profile y ejecutar normalmente. Esto funcionó para mí con Mavericks y Xcode 5.1 usando venv:

En ~ / .bash_profile:

exportar ARCHFLAGS = -Wno-error = argumento-de-línea-de-comandos-no utilizado-error-duro-en-futuro

Luego, simplemente ejecute el comando:

pip install --upgrade numpy

Brian
fuente
4
lo sudoanterior es para la instalación de todo el sistema, se puede ejecutar sin en un virtualenv
Eren Güven
5

Simplemente tuve que abrir XCode y aceptar el acuerdo y dejar que instalara las herramientas. Luego volví a PyCharm e instalé numpy nuevamente sin problemas.

user3589327
fuente
5

Si está ejecutando una distribución de Linux, es posible que necesite un compilador de C, especialmente si ve líneas de registro reveladoras como sh: gcc: command not found. Puede seguir las instrucciones aquí , que he resumido a continuación:

  • Fedora, Red Hat, CentOS o Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian o Ubuntu Linux

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

Entonces puedes intentar volver a ejecutar:

sudo pip install numpy
avyk37
fuente
4

Para los usuarios de Fedora que tienen un problema similar, intente instalar estos paquetes:

(si no usa python3, use python-devel y pip en lugar de 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

entonces intenta

sudo pip3 install numpy
Ollegn
fuente
2

En algunos casos, después de que OS X actualice XCode, XCode requerirá que el usuario (con privilegios administrativos) acepte una nueva licencia. Hasta que se acepte la licencia, clang y gcc emitirán un error al intentar compilar y vincular el código. O al menos paquetes de Python.

Si inicia XCode y acepta la licencia, los errores ya no aparecen.

Al menos, este fue mi caso.

lukecampbell
fuente
1

Esto significa que no puede encontrar su compilador de C. Intente instalar el compilador gcc si falla la vinculación de otro compilador.

Inc33
fuente
1

En mi caso, esto sucedió durante una compilación de Docker. El problema fue que la imagen base no se arregló en una versión específica de Python y numpy no pudo compilar con la nueva.

FROM python:3-slim  # BAD

Después de cambiarlo a lo siguiente, funcionó:

FROM python:3.8-slim  # GOOD

¡Recuerda arreglar tus versiones! :-)

Más
fuente
Lo mismo me sucedió hoy. Parece que eliminaron el compilador c + las utilidades make asociadas en 3.9.0.
PF1
0

Lo anterior funcionó para mí solo después de instalar python3-dev.

Iliyan Bobev
fuente
0

En Fedora 22, esto se resolvió actualizando pip: sudo pip install --upgrade pip

Zenperttu
fuente