web-dev-qa-db-fra.com

Clang error: argument inconnu: '-mno-fused-madd' (échec de l'installation du package python)

Le message d'erreur suivant s'affiche lorsque j'essaie d'installer psycopg2 via pip sur Mavericks 10.9:

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

Vous ne savez pas comment procéder et vous avez cherché ici et ailleurs cette erreur particulière. Toute aide est très appréciée!

Voici la sortie complète de pip:

$ pip install psycopg2
Downloading/unpacking psycopg2
  Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded
  Running setup.py (path:/private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2/setup.py) Egg_info for package psycopg2

Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    building 'psycopg2._psycopg' extension
    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 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090303 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I. -I/usr/local/Cellar/postgresql/9.3.3/include -I/usr/local/Cellar/postgresql/9.3.3/include/server -c psycopg/psycopgmodule.c -o build/temp.macosx-10.9-intel-2.7/psycopg/psycopgmodule.o
    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
    error: command 'cc' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip-bnWiwB-record/install-record.txt --single-version-externally-managed --compile:
    running install

running build

running build_py

creating build

creating build/lib.macosx-10.9-intel-2.7

creating build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/__init__.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/_json.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/_range.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/errorcodes.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/extensions.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/extras.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/pool.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/psycopg1.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

copying lib/tz.py -> build/lib.macosx-10.9-intel-2.7/psycopg2

creating build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/__init__.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/dbapi20.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/dbapi20_tpc.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_async.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_bug_gc.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_bugX000.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_cancel.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_connection.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_copy.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_cursor.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_dates.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_extras_dictcursor.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_green.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_lobject.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_module.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_notify.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_psycopg2_dbapi20.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_quote.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_transaction.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_types_basic.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_types_extras.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/test_with.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/testconfig.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

copying tests/testutils.py -> build/lib.macosx-10.9-intel-2.7/psycopg2/tests

running build_ext

building 'psycopg2._psycopg' extension

creating build/temp.macosx-10.9-intel-2.7

creating build/temp.macosx-10.9-intel-2.7/psycopg

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 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090303 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I. -I/usr/local/Cellar/postgresql/9.3.3/include -I/usr/local/Cellar/postgresql/9.3.3/include/server -c psycopg/psycopgmodule.c -o build/temp.macosx-10.9-intel-2.7/psycopg/psycopgmodule.o

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

error: command 'cc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip-bnWiwB-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2
268
tino

Vous pouvez indiquer à clang de ne pas générer cette erreur en définissant les variables d'environnement suivantes avant la compilation:

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments

Ensuite, pip install psycopg2 devrait fonctionner.

J'ai eu le même en essayant de pip install lxml.

Edit: si vous installez en tant que superutilisateur (ce qui sera probablement le cas si vous essayez d’ajouter à /Library/Python/2.7/site-packages, la distribution native Apple installée par défaut Python qui est livrée. avec OS X, plutôt que vers une autre distribution Python que vous avez ultérieurement installée vous-même), vous devrez procéder comme décrit par @Thijs Kuipers dans les commentaires ci-dessous:

Sudo -E pip install psycopg2

ou l’équivalent, quel que soit le nom du paquet que vous remplacez par psycopg2.

UPDATE [2014-05-16]: Apple a corrigé ce problème avec les Pythons système mis à jour (2.7, 2.6 et 2.5) dans OS X 10.9.3, de sorte que la solution de contournement n'est plus nécessaire lorsque vous utilisez la dernière version de Mavericks. et Xcode 5.1+. Toutefois, à ce stade, la solution de contournement est toujours requise pour OS X 10.8.x (Mountain Lion, actuellement 10.8.5) si vous utilisez Xcode 5.1+ ici.

438
user3405578

Mise à jour: 10.9.3 résout le problème avec le système CPython.

Ceci est dû à la dernière mise à jour de clone de Apple fournie avec Xcode 5.1 aujourd'hui et qui affecte un très grand nombre de personnes. Nous espérons donc qu'un correctif apparaîtra bientôt.

Mise à jour: Je ne m'attendais pas à autant d'attention, mais voici plus de détails: le clang 3.4 Apple envoie les erreurs par défaut pour les indicateurs inconnus, mais CPython construit des modules en utilisant le même ensemble d'indicateurs avec lequel il a été compilé. à l'origine. Le système CPython a été compilé avec plusieurs indicateurs inconnus de Clang, ce qui a provoqué ce problème. Voici les drapeaux de compilation actuels de CPython Mavericks (10.9.2):

-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -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

Pour résoudre ce problème, vous avez quelques options:

  • Ajoutez ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future à vos drapeaux de compilation.
  • Passer CFLAGS=""
  • Supprimez les indicateurs non pris en charge du fichier sysconfigdata.py (comme indiqué dans une autre réponse).
  • Compilez un nouveau python en utilisant homebrew .
  • Attendez que la prochaine mise à jour OS X, qui aurait pour effet d'inclure Python/Ruby recompilé, supprime ce problème pour les environnements d'exécution système.
76
Paul Kehrer

xCode 5.1

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
63
Isis

Voici un moyen de contourner le problème qui consiste à supprimer l'indicateur de l'installation python.

Dans /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py, il existe plusieurs endroits où le drapeau -mfused-madd/-mno-fused-madd est défini.

Éditez ce fichier et supprimez toutes les références à cet indicateur, votre compilation devrait fonctionner:

Sudo sed -i '.old' 's/ -m\(no-\)\{0,1\}fused-madd //g' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py

Vous devez également supprimer les fichiers _sysconfigdata.pyc et _sysconfigdata.pyo correspondants - au moins sur mon système, ces fichiers n'ont pas été automatiquement reconstruits:

cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
Sudo rm _sysconfigdata.pyo _sysconfigdata.pyc

Notez que vous devez utiliser l'accès root pour apporter ces modifications.

15
user3405479

J'ai utilisé homebrew pour installer postgresql, puis j'ai voulu installer psycopg2 dans le fichier fourni par le système python 2.7 sur Mavericks. Pour que cela fonctionne, j'ai fini par exécuter ceci:

Sudo ARCHFLAGS="-Arch x86_64" CFLAGS=-Wunused-command-line-argument-hard-error-in-future pip install psycopg2
4
Nathan

J'ai également édité la notion du python système de ses drapeaux de compilation originaux (comme @ user3405479). Au lieu d'un éditeur, j'ai utilisé des outils de ligne de commande pour éditer le fichier "à la place" (l'inode change). J'ai également compilé de nouveaux fichiers pyo et pyc au lieu de les laisser supprimés.

Les commandes suivantes sont exécutées en tant que root, par exemple sous Sudo -i

pushd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7

sed 's/-mno-fused-madd//g' _sysconfigdata.py \ | diff -p _sysconfigdata.py - | patch -b

python -m py_compile _sysconfigdata.py

python -OO -m py_compile _sysconfigdata.py

popd

4
Ben

Au moins Apple en est conscient, car ce problème est traité dans Xcode 5.1 Notes de publication (section Compiler). Attendez-vous à une mise à jour de Python et de Ruby dans la prochaine mise à jour du système d'exploitation (doigts croisés!). Notez également que le drapeau -Wno-error=unused-command-line-argument-hard-error-in-future est censé être une solution de contournement temporaire et qu'il disparaîtra dans le futur (après la correction du système Python!).

Si vous êtes un responsable de paquet Python comme moi et que vous voulez éviter à vos utilisateurs de travailler eux-mêmes, voici une solution (en plus de fournir des roues/oeufs binaires) qui va dans votre fichier setup.py:

from distutils.command.build_ext import build_ext
import subprocess
import sys

# Workaround for OS X 10.9.2 and Xcode 5.1+
# The latest clang treats unrecognized command-line options as errors and the
# Python CFLAGS variable contains unrecognized ones (e.g. -mno-fused-madd).
# See Xcode 5.1 Release Notes (Compiler section) and
# http://stackoverflow.com/questions/22313407 for more details. This workaround
# follows the approach suggested in http://stackoverflow.com/questions/724664.
class build_ext_subclass(build_ext):
    def build_extensions(self):
        if sys.platform == 'darwin':
            # Test the compiler that will actually be used to see if it likes flags
            proc = subprocess.Popen(self.compiler.compiler + ['-v'],
                                    stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                                    universal_newlines=True)
            stdout, stderr = proc.communicate()
            clang_mesg = "clang: error: unknown argument: '-mno-fused-madd'"
            if proc.returncode and stderr.splitlines()[0].startswith(clang_mesg):
                for ext in self.extensions:
                    # Use temporary workaround to ignore invalid compiler option
                    # Hopefully -mno-fused-madd goes away before this workaround!
                    ext.extra_compile_args += ['-Wno-error=unused-command-line-argument-hard-error-in-future']
        build_ext.build_extensions(self)

setup(
    name="mypackage",
    ...
    cmdclass={'build_ext' : build_ext_subclass},
    ...
)
2
llude

Vous êtes probablement sur Python 2.7.5

$ python

Python 2.7.5 (default, Aug 25 2013, 00:04:04)  [GCC 4.2.1 Compatible
Apple LLVM 5.0 (clang-500.0.68)] on darwin

La solution la plus simple est l’adresse suivante: www.python.org et installez Python 2.7.6, compatible avec LLVM 5.1.

Puis grillez votre ancien environnement virtuel, rmvirtualenv {virtual_env_name}.

Puis créez un nouvel envoi virtuel ..

mkvirtualenv --no-site-packages -p/Library/Frameworks/Python.framework/Versions/2.7/bin/python {virtual_env_name}

pip devrait bien fonctionner après cela.

1
affablebloke

Aucune des solutions ci-dessus n'a fonctionné pour moi. Ma situation est légèrement différente. J'essayais d'installer rdiff-backup via homebrew lorsque j'ai reçu ce message d'erreur.

J'ai apparemment à la fois le python par défaut d'Apple (2.7.5 @/usr/bin/python) et le python de Homebrew (2.7.6 @ /usr/local/Cellar/python/2.7. 6/bin/python), mais l'erreur venait du python d'Apple.

Pour résoudre le problème, j'ai fondamentalement basculé les binaires python.

J'ai fait ça via Sudo:

  • cp/usr/bin/python/usr/bin/python_orig
  • ln -s /usr/local/Cellar/python/2.7.6/bin/python/usr/bin/python

Ensuite, "brew install rdiff-backup" a réussi sans erreur.

Enfin, j'ai fait "mv/usr/bin/python_orig/usr/bin/python" pour tout revenir en arrière.

1

Amazon Linux [AWS EC2]

Essayer de pip install paramiko sur Amazon Linux AMI release 2016.09 m'a donné une erreur qui incluait un lien vers ce SO post. Donc, même si cela ne correspond pas au titre du PO, je vais partager la réponse.

yum install libffi-devel
yum install gcc
yum install openssl-devel
pip install paramiko

D'or!

1
Bruno Bronosky

Pour moi, les mauvais drapeaux ont été explicitement donnés dans le Makefile du paquet. J'ai donc dû éditer le fichier makefile pour supprimer l'indicateur non reconnu du paquetage en erreur.

0
mike

J'ai utilisé le package homebrew python. Fonctionne bien après avoir re-compilé.

0
Vitaliy Khamin

Variation du correctif _sysconfigdata.py: utiliser un environnement virtuel

cp /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py ${VIRTUAL_ENV}/lib/python2.7/_sysconfigdata.py

Puis éditez votre copie à $ {VIRTUAL_ENV} /lib/python2.7/_sysconfigdata.py

J'ai enlevé toutes les occurrences de '-mno-fused-madd' et les builds ont ensuite fonctionné dans ce virtualenv.

Aucune racine nécessaire!

0
bolson

La mise à niveau de Homebrew et l'installation d'unixodbc m'ont résolu le problème

brew upgrade
brew install unixodbc