Probleme mit der Pip-Installation numpy - RuntimeError: Defekte Toolchain: Ein einfaches C-Programm kann nicht verknüpft werden

93

Ich versuche, numpy (und scipy und matplotlib) in eine Virturalenv zu installieren.

Ich bekomme immer wieder folgende Fehler:

RuntimeError: Broken toolchain: cannot link a simple C program

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

Ich habe die Befehlszeilentools für xcode installiert

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

Ich bin unter Mac OSX 10.9 und verwende eine von Brew installierte Python

Bearbeiten
Ja, versucht mit pip zu installieren.
Der gesamte Traceback ist riesig (> 400 Zeilen)

Hier ist ein Abschnitt davon:

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
quelle
1
Bitte zeigen Sie einige der Zeilen über der RuntimeErrorZeile an, damit wir sehen können, welche Befehle fehlschlagen. Installieren Sie auch über pipoder durch direktes Erstellen der Quelle?
MattDMo
Rodger das, jetzt bearbeitet
Ben
Lol @ "kann ein einfaches C-Programm nicht verknüpfen". So ein Schwachsinn!
Cameron Hudson

Antworten:

77

Während es hässlich ist, scheint es zu funktionieren

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

Beachten Sie, dass Sie, wenn Sie diesen Fehler für ein anderes Paket als numpy (z. B. lxml) erhalten, diesen Paketnamen anstelle des numpyEndes des Befehls angeben.

Ich sah ein ähnliches Problem, das jemand bei der Installation eines Edelsteins hatte

Ruby Gem-Installation Json schlägt auf Mavericks und Xcode 5.1 fehl - unbekanntes Argument: '-multiply_definedsuppress'

Dies ist nur eine vorübergehende Korrektur. Irgendwann müssen die Compileroptionen behoben werden

Derrick Shoemake
quelle
1
@ Ben: FWIW, ich habe das gleiche Problem (ohne Brew). Es erschien nach der Aktualisierung von Xcode auf 5.1. Wie hässlich dies auch sein mag, dies scheint (vorerst) die Antwort zu sein.
Orome
2
Eine Erklärung finden Sie in den Versionshinweisen zu XCode 5.1 .
Badzil
Wird unused-command-line-argument-hard-error-in-futuremit dem neuesten Xcode unter Yosemite noch benötigt? Die Dinge scheinen ohne sie zu funktionieren (zumindest für die Pakete, die ich müde bin).
Orome
82

Für Docker (Alpine) und Python 3.x hat dies bei mir funktioniert:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev
Willem Bressers
quelle
13
Für alle, die Docker Python3 Alpine Image verwenden, ist dies die Lösung.
xssChauhan
3
Ich brauchte eine apk updateerste, sonst bekam ich eine ERROR: unsatisfiable constraintsNachricht.
yair
Ich danke dir sehr!
Amorphous
Dies ist auch die Lösung für das Docker Python2 Alpine Image.
Eduard
3
Ich konnte dies auf alpinen mit nur gcc g++ make python3-devfür numpy / nmslib tun. Die Ursache für dieses spezielle Problem scheint der fehlende C ++ - Compiler zu sein g++(es sieht nach dem Fehler aus, dass gccund makebereits installiert sind). Die anderen wichtigen Teile des numpyBuilds sind die mitgelieferten Python3-Header python3-dev.
ThisGuyCantEven
15

Das Problem ist, dass Sie nicht kompilieren können.

Stellen Sie zunächst sicher, dass Sie die neuen Allgemeinen Geschäftsbedingungen mit Xcode akzeptiert haben. Öffnen Sie dazu einfach xCode und akzeptieren Sie.

Versuchen Sie dann, gcc mit zu installieren

brew install gcc

Versuchen Sie abschließend, Numpy mit zu installieren

pip install numpy

Hoffe das hilft.

Desmond
quelle
das hat bei mir funktioniert. Das Problem war, dass ich xcode nicht geöffnet und die Allgemeinen Geschäftsbedingungen akzeptiert habe.
Stephens
9

Wenn Sie sudo nicht verwenden möchten (damit Berechtigungen und ähnliches bei Verwendung von venv erhalten bleiben), können Sie die ARCHFLAGS-Deklaration zu Ihrem .bash_profile hinzufügen und wie gewohnt ausführen. Dies funktionierte bei mir mit Mavericks und Xcode 5.1 mit venv:

In ~ / .bash_profile:

export ARCHFLAGS = -Wno-error = nicht verwendetes Befehlszeilenargument-Hard-Error-in-Future

Führen Sie dann einfach den folgenden Befehl aus:

pip install --upgrade numpy

Brian
quelle
4
Das sudoobige ist für die systemweite Installation, kann ohne in einer virtuellen Umgebung ausgeführt werden
Eren Güven
5

Ich musste einfach XCode öffnen und die Vereinbarung akzeptieren und die Tools installieren lassen. Ich ging dann zurück zu PyCharm und installierte numpy ohne Probleme erneut.

user3589327
quelle
5

Wenn Sie eine Linux-Distribution ausführen, benötigen Sie möglicherweise einen C-Compiler, insbesondere wenn Sie verräterische Protokollzeilen wie sehen sh: gcc: command not found. Sie können den Anweisungen hier folgen , die ich unten zusammengefasst habe:

  • Fedora, Red Hat, CentOS oder Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian oder Ubuntu Linux

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

Dann können Sie versuchen, erneut auszuführen:

sudo pip install numpy
avyk37
quelle
4

Versuchen Sie für Fedora-Benutzer, die ein ähnliches Problem haben, die Installation dieser Packeges:

(Wenn Sie Python3 nicht verwenden, verwenden Sie Python-Devel und Pip anstelle von 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

dann versuche es

sudo pip3 install numpy
Ollegn
quelle
2

In einigen Fällen muss der Benutzer (mit Administratorrechten) nach dem Upgrade von XCode durch OS X eine neue Lizenz akzeptieren. Bis die Lizenz akzeptiert wird, geben clang und gcc beim Versuch, Code zu kompilieren und zu verknüpfen, einen Fehler aus. Oder zumindest Python-Pakete.

Wenn Sie XCode starten und die Lizenz akzeptieren, werden die Fehler nicht mehr angezeigt.

Zumindest war dies bei mir der Fall.

Lukecampbell
quelle
1

Dies bedeutet, dass Ihr C-Compiler nicht gefunden werden kann. Versuchen Sie, den gcc-Compiler zu installieren, wenn die Verknüpfung mit einem anderen Compiler fehlschlägt.

Inc33
quelle
0

Das obige hat bei mir erst nach der Installation von python3-dev funktioniert.

Iliyan Bobev
quelle
0

Auf Fedora 22 wurde dies durch Aktualisieren von pip selbst behoben: sudo pip install --upgrade pip

zenperttu
quelle