errore clang: argomento sconosciuto: '-mno-fused-madd' (errore di installazione del pacchetto python)


272

Viene visualizzato il seguente errore durante il tentativo di installazione psycopg2tramite pip su Mavericks 10.9:

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

Non sono sicuro di come procedere e ho cercato qui e altrove questo particolare errore. Ogni aiuto è molto apprezzato!

Ecco l'output completo da 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

1
Ho lo stesso errore quando costruisco una libreria C: clang: errore: argomento sconosciuto: '-mno-fused-madd' ...
huync

10
Questo problema si verifica con qualsiasi pacchetto Python che include un modulo C, non solo psycopg2.
alastair,

Risposte:


440

Puoi dire a clang di non sollevare questo come errore impostando le seguenti variabili di ambiente prima della compilazione:

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

Quindi pip install psycopg2dovrebbe funzionare.

Ho avuto lo stesso quando ho provato a farlo pip install lxml.

Modifica: se stai installando come superutente (che sarà probabilmente il caso se stai provando ad aggiungere /Library/Python/2.7/site-packages, la distribuzione Python nativa di Apple installata in fabbrica che viene fornita con OS X, piuttosto che ad un'altra distribuzione Python che hai successivamente installato tu ), quindi dovrai farlo, come descritto da @Thijs Kuipers nei commenti seguenti:

sudo -E pip install psycopg2

o l'equivalente, per qualunque altro nome di pacchetto si possa sostituire al posto di psycopg2.

AGGIORNAMENTO [16-05-2014]: Apple ha risolto questo problema con Pythons di sistema aggiornato (2.7, 2.6 e 2.5) in OS X 10.9.3modo che la soluzione alternativa non fosse più necessaria quando si utilizzano gli ultimi Maverick e Xcode 5.1+. Tuttavia, a partire da ora, la soluzione è ancora necessaria per OS X 10.8.x(Mountain Lion, attualmente 10.8.5) se si utilizza Xcode 5.1+lì.


2
Ho avuto questo problema greenletcon l' installazione di pip. Questo risolto, grazie.
jbrown

1
Questo ha funzionato per me come soluzione immediata, grazie! Vedi la risposta di Paul Kehrer per una spiegazione sulla fonte del problema.
tino,

5
Se si installa come root, è necessario impostare i flag per l'utente root.
ErikAndren,

48
Ho dovuto aggiungere il -Eflag per sudocaricare le variabili di ambiente per l'esecuzione root come ha detto @ErikAndren. Quindi prima le due exportaffermazioni di cui sopra , seguite da sudo -E doSomething.
Thijs Kuipers,

1
Mi hai salvato la vita con il cuscino. Grazie!
Sloy il

76

Aggiornamento: 10.9.3 risolve il problema con il sistema CPython.

Ciò è causato dall'ultimo clang update di Apple fornito con Xcode 5.1 oggi e sta interessando molte, molte persone, quindi spero che una soluzione appaia presto.

Aggiornamento: non mi aspettavo che ciò attirasse così tanta attenzione, ma ecco maggiori dettagli: il clang 3.4 Apple sta spedendo i valori predefiniti per errori su flag sconosciuti, ma CPython costruisce moduli usando lo stesso set di flag con cui era stato originariamente compilato. Il sistema CPython è stato compilato con diversi flag sconosciuti da clang, causando così questo problema. Di seguito sono riportati i flag di compilazione CPython Mavericks (10.9.2) correnti:

-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

Per risolvere questo problema hai alcune opzioni:

  • Aggiungi ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-futureai flag di compilazione.
  • Passaggio CFLAGS=""
  • Rimuovere le bandiere non supportate da sysconfigdata.py (come indicato in un'altra risposta).
  • Compilare un nuovo pitone usando homebrew .
  • Attendere il prossimo aggiornamento di OS X, che si dice includa Python / Ruby ricompilato per rimuovere questo problema per i runtime del sistema.

@paul, ah grazie per le informazioni. c'è un modo per rimanere aggiornato sullo stato di questo bug di cui sei a conoscenza? mi piacerebbe aggiornare clang non appena sarà disponibile una correzione.
tino,

2
Questo non è un bug clang, è un bug di distribuzione di Apple. Apple non dovrebbe distribuire una versione di Python creata con impostazioni incompatibili con clang 3.4. È stato risolto correttamente da Apple che aggiorna l'interprete Python.
Fino

Puoi convalidarlo eseguendo python-config --cflags. Quando viene eseguito su Python predefinito di Apple, mostrerà opzioni sconosciute per clangare 3.4.
Fino

c'è una soluzione a questo se ho già aggiornato a Xcode 5.1? L'aggiunta di tali esportazioni a Bashrc come proposto sopra non sembra aver risolto il problema.
Sean Danzeiser,

Per Sean: sul mio Mac non ho ~/.bash_profilebashrc, ma questo avrebbe bisogno di riavviare la shell per avere effetto.
Peter

63

xCode 5.1

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

fantastico, questo mi aiuta a installare il cuscino
Nyambaa

Avevo molti problemi con l'installazione di psycog2 tramite pip e questo ha risolto il problema per me. Grazie enormi.
Brandon Aaskov,

2
Se stai usando sudo, il sudo deve andare prima di impostare la variabile d'ambiente. (ie, sudo ARCHFLAGS=... pip install ...)
Joe Freeman

Ha funzionato per l'installazione di pycrypto. Grazie!
Chris Sears,

15

Ecco una soluzione che prevede la rimozione del flag dall'installazione di Python.

In /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.pysono diversi punti in cui è impostato il flag -mfused-madd/ -mno-fused-madd.

Modifica questo file e rimuovi tutti i riferimenti a quel flag che la tua compilation dovrebbe funzionare:

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

È necessario eliminare anche i file corrispondenti _sysconfigdata.pyce _sysconfigdata.pyo- almeno sul mio sistema questi file non sono stati ricostruiti automaticamente:

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

Si noti che è necessario utilizzare l'accesso root per apportare tali modifiche.


2
Questo ha davvero funzionato! Ho dovuto rimuovere sia _sysconfigdata.pyc che _sysconfigdata.pyo
isubuz,

4

Ho anche modificato la nozione di python di sistema dei suoi flag di compilazione originali (come ha fatto @ user3405479). Invece di un editor ho usato gli strumenti della riga di comando per modificare il file "sul posto" (l'inode cambia). Ho anche compilato nuovi file pyo e pyc invece di lasciarli cancellati.

I seguenti comandi vengono eseguiti come root, ad esempio sotto 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


Fino a quando Apple non risolverà l'installazione di Python, questa sembra la soluzione più pratica e definitiva. Grazie per le istruzioni complete!
ᴠɪɴᴄᴇɴᴛ

4

Ho usato homebrew per installare postgresql, e poi ho voluto installare psycopg2 in Python 2.7 fornito dal sistema su Mavericks. Per farlo funzionare ho finito per eseguire questo:

sudo ARCHFLAGS="-arch x86_64" CFLAGS=-Wunused-command-line-argument-hard-error-in-future pip install psycopg2

2

Almeno Apple ne è consapevole, poiché questo problema è discusso nelle Note di rilascio di Xcode 5.1 (sezione Compilatore). Aspettati un Python e un Ruby aggiornati nel prossimo aggiornamento del sistema operativo (dita incrociate!). Nota anche che la -Wno-error=unused-command-line-argument-hard-error-in-futurebandiera è pensata per essere una soluzione temporanea e andrà via in futuro (si spera che il sistema Python sia stato corretto!).

Se sei un manutentore di pacchetti Python come me e vuoi salvare ai tuoi utenti la seccatura di aggirarli da soli, ecco una soluzione (oltre a fornire ruote / uova binarie) che va nel tuo setup.pyfile:

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},
    ...
)

1

Nessuna delle soluzioni sopra ha funzionato per me. La mia situazione è leggermente diversa. Stavo cercando di installare rdiff-backup tramite homebrew quando ho ricevuto questo messaggio di errore.

Apparentemente ho sia il pitone predefinito di Apple (2.7.5 @ / usr / bin / python) sia il pitone di Homebrew (2.7.6 @ /usr/local/Cellar/python/2.7.6/bin/python), ma l'errore stava arrivando dal pitone di Apple.

Per risolvere il problema, fondamentalmente ho cambiato i binari di Python.

L'ho fatto tramite sudo:

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

Quindi, 'brew install rdiff-backup' è riuscito senza errori.

Alla fine, ho fatto "mv / usr / bin / python_orig / usr / bin / python" per ripristinare tutto.


1

Probabilmente sei su 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 soluzione più semplice vai su www.python.org e installa Python 2.7.6 che è compatibile con LLVM 5.1.

Poi brindisi dell'ambiente virtuale vecchio, rmvirtualenv {virtual_env_name}.

Quindi crea un nuovo ambiente virtuale.

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

pip dovrebbe funzionare bene dopo questo.


Potrebbe voler estrarre i requisiti dal tuo vecchio ambiente prima di tostarlo;) pip freeze> Requisito.txt
GreenAsJade

1

Amazon Linux [AWS EC2]

Provare a pip install paramikoon Amazon Linux AMI release 2016.09mi ha dato un errore che includeva un link a questo post SO. Quindi, anche se non corrisponde al titolo del PO, condividerò la risposta.

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

D'oro!



0

Variazione della correzione _sysconfigdata.py: utilizzare un ambiente virtuale

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

Quindi modifica la tua copia in $ {VIRTUAL_ENV} /lib/python2.7/_sysconfigdata.py

Ho rimosso tutte le occorrenze di '-mno-fused-madd' e poi le build hanno funzionato in quella virtualenv.

Nessuna radice necessaria!


0

Per me, le cattive bandiere sono state esplicitamente fornite nel Makefile del pacchetto. Quindi ho dovuto modificare il makefile per rimuovere il flag non riconosciuto dal pacchetto di errori.


0

L'aggiornamento di Homebrew e l'installazione di unixodbc l'hanno risolto per me

brew upgrade
brew install unixodbc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.