Problèmes avec pip install numpy - RuntimeError: Chaîne d'outils cassée: impossible de lier un simple programme C

93

J'essaye d'installer numpy (et scipy et matplotlib) dans un virturalenv.

Je continue cependant à recevoir ces erreurs:

RuntimeError: Broken toolchain: cannot link a simple C program

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

J'ai installé les outils de ligne de commande pour xcode

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

Je suis sur Mac OSX 10.9 en utilisant un python installé brew

Modifier
Oui, en essayant d'installer avec pip.
L'ensemble du traçage est énorme (> 400 lignes)

En voici une section:

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
la source
1
s'il vous plaît montrer plusieurs des lignes au-dessus de la RuntimeErrorligne, afin que nous puissions voir quelles commandes échouent. De plus, installez-vous via pipou en construisant la source directement?
MattDMo
Rodger that, édité maintenant
Ben
Lol @ "ne peut pas lier un simple programme C". Quel impertinent!
Cameron Hudson

Réponses:

77

Bien que ce soit moche, cela semble fonctionner

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

Notez que si vous obtenez cette erreur pour un package autre que numpy, (tel que lxml) spécifiez ce nom de package au lieu de numpyà la fin de la commande.

J'ai vu un problème similaire que quelqu'un rencontrait avec l'installation d'un bijou

L'installation de Ruby Gem échoue sur Mavericks et Xcode 5.1 - argument inconnu: '-multiply_definedsuppress'

Ce n'est qu'une correction temporaire, à un moment donné, les options du compilateur devront être corrigées

Derrick Shoemake
la source
1
@Ben: FWIW, j'ai le même problème (sans utiliser d'infusion). Il est apparu après la mise à jour de Xcode vers la version 5.1. Cependant moche, cela semble être la réponse (pour le moment).
orome
2
Il y a une explication dans les notes de mise à jour de XCode 5.1 .
badzil
Est-ce unused-command-line-argument-hard-error-in-futuretoujours nécessaire avec le dernier Xcode sous Yosemite? Les choses semblent fonctionner (du moins pour les paquets que j'ai fatigués) sans cela.
orome
82

Pour Docker (Alpine) et Python 3.x, cela a fonctionné pour moi:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev
Willem Bressers
la source
13
Pour tous ceux qui utilisent l'image alpine docker python3, c'est la solution.
xssChauhan
3
J'avais besoin d'une apk updatepremière, sinon j'ai reçu un ERROR: unsatisfiable constraintsmessage.
yair
Merci beaucoup!
Amorphe
C'est également la solution pour l'image alpine docker python2.
Eduard
3
J'ai pu le faire en alpin avec uniquement gcc g++ make python3-devpour numpy / nmslib. La cause de cette question semble être le compilateur C ++ manquant g++(il semble par l'erreur gccet makesont déjà installés). Les autres parties importantes de numpybuild sont les en-têtes python3 fournis avec python3-dev.
ThisGuyCantEven
15

Le problème est que vous ne parvenez pas à compiler.

Tout d'abord, assurez-vous d'avoir accepté les nouvelles conditions générales avec Xcode. Pour ce faire, ouvrez simplement xCode et acceptez.

Ensuite, essayez d'installer gcc avec

brew install gcc

Enfin, essayez d'installer Numpy avec

pip install numpy

J'espère que cela t'aides.

Desmond
la source
cela a fonctionné pour moi. Le problème était que je n'ai pas ouvert xcode et accepté les termes et conditions.
Stephens
9

Si vous ne voulez pas utiliser sudo (donc les permissions et les choses comme ça sont préservées lors de l'utilisation de venv), vous pouvez ajouter la déclaration ARCHFLAGS à votre .bash_profile et l'exécuter normalement. Cela a fonctionné pour moi avec Mavericks et Xcode 5.1 en utilisant avec venv:

Dans ~ / .bash_profile:

export ARCHFLAGS = -Wno-error = argument-de-ligne-de-commande-inutilisé-erreur-dure-dans-le-futur

Ensuite, exécutez simplement la commande:

pip install --upgrade numpy

Brian
la source
4
ce qui sudoprécède est pour une installation à l'échelle du système, peut fonctionner sans dans un virtualenv
Eren Güven
5

J'ai simplement dû ouvrir XCode et accepter l'accord et le laisser installer les outils. Je suis ensuite retourné à PyCharm et installé à nouveau numpy sans aucun problème.

user3589327
la source
5

Si vous exécutez une distribution Linux, vous aurez peut-être besoin d'un compilateur C, surtout si vous voyez des lignes de journal révélatrices comme sh: gcc: command not found. Vous pouvez suivre les instructions ici , que j'ai résumées ci-dessous:

  • Fedora, Red Hat, CentOS ou Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian ou Ubuntu Linux

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

Ensuite, vous pouvez essayer de réexécuter:

sudo pip install numpy
avyk37
la source
4

Pour les utilisateurs de fedora qui rencontrent un problème similaire, essayez d'installer ces packs:

(si vous n'utilisez pas python3, utilisez python-devel et pip au lieu 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

puis essayez

sudo pip3 install numpy
Ollegn
la source
2

Dans certains cas, après la mise à niveau de XCode d'OS X, XCode demandera à l'utilisateur (avec des privilèges administratifs) d'accepter une nouvelle licence. Jusqu'à ce que la licence soit acceptée, clang et gcc émettront une erreur lors de la tentative de compilation et de liaison du code. Ou au moins des packages python.

Si vous lancez XCode et acceptez la licence, les erreurs n'apparaissent plus.

Du moins, c'était le cas pour moi.

lukecampbell
la source
1

Cela signifie qu'il ne trouve pas votre compilateur C. Essayez d'installer le compilateur gcc si la liaison d'un autre compilateur échoue.

Inc33
la source
0

Ce qui précède n'a fonctionné pour moi qu'après l'installation de python3-dev.

Iliyan Bobev
la source
0

Sur Fedora 22, cela a été résolu en mettant à jour pip lui-même: sudo pip install --upgrade pip

zenperttu
la source