Clang-Fehler: Unbekanntes Argument: ‘-mno-fused-madd’ (Fehler bei der Installation des Python-Pakets)

Lesezeit: 12 Minuten

Benutzer-Avatar
Tino

Beim Installationsversuch erhalte ich folgende Fehlermeldung psycopg2 über Pip auf Mavericks 10.9:

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

Ich bin mir nicht sicher, wie ich vorgehen soll, und habe hier und anderswo nach diesem bestimmten Fehler gesucht. Jede Hilfe wird sehr geschätzt!

Hier ist die vollständige Ausgabe von 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

  • Ich habe denselben Fehler beim Erstellen einer C-Bibliothek: clang: error: unknown argument: ‘-mno-fused-madd’ …

    – huync

    11. März 2014 um 10:13 Uhr

  • Dieses Problem tritt bei jedem Python-Paket auf, das ein C-Modul enthält, nicht nur bei psycopg2.

    – al45tair

    15. März 2014 um 9:02 Uhr

Benutzer-Avatar
Benutzer3405578

Sie können clang anweisen, dies nicht als Fehler auszulösen, indem Sie vor der Kompilierung die folgenden Umgebungsvariablen festlegen:

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

Dann pip install psycopg2sollte arbeiten.

Ich hatte das gleiche beim Versuch pip install lxml.

Bearbeiten: Wenn Sie als Superuser installieren (was wahrscheinlich der Fall sein wird, wenn Sie versuchen, an /Library/Python/2.7/site-packagesdie native, werkseitig von Apple installierte Python-Distribution, die mit OS X geliefert wird, und nicht zu einer anderen Python-Distribution, die Sie anschließend selbst installiert haben), müssen Sie Folgendes tun, wie von @Thijs Kuipers in den Kommentaren unten beschrieben:

sudo -E pip install psycopg2

oder das Äquivalent für einen anderen Paketnamen, den Sie möglicherweise ersetzen psycopg2.

AKTUALISIEREN [2014-05-16]: Apple hat dieses Problem mit aktualisierten System-Pythons (2.7, 2.6 und 2.5) in behoben OS X 10.9.3 Daher ist die Problemumgehung bei Verwendung der neuesten Mavericks und nicht mehr erforderlich Xcode 5.1+. Ab sofort ist die Problemumgehung jedoch noch erforderlich für OS X 10.8.x (Mountain Lion, derzeit 10.8.5), falls Sie verwenden Xcode 5.1+ dort.

  • Ich hatte dieses Problem bei der Installation greenlet mit Pip. Das hat es behoben, danke.

    – jbraun

    11. März 2014 um 14:21 Uhr


  • Dies hat bei mir als sofortige Lösung funktioniert, danke! Eine Erklärung zur Ursache des Problems finden Sie in der Antwort von Paul Kehrer.

    – Tino

    11. März 2014 um 17:02 Uhr

  • Wenn Sie als Root installieren, müssen Sie die Flags für den Root-Benutzer setzen.

    – ErikAndren

    18. März 2014 um 6:29 Uhr

  • Ich musste die hinzufügen -E Flagge zu sudo um die Umgebungsvariablen für die Root-Ausführung zu laden, wie @ErikAndren sagte. Also zuerst die beiden oben genannten export Aussagen, gefolgt von sudo -E doSomething.

    – Thijs Kuipers

    18. März 2014 um 22:43 Uhr

  • Hat mir mit Pillow mein Leben gerettet. Vielen Dank!

    – Schlau

    29. März 2014 um 23:46 Uhr

Benutzer-Avatar
Paul Kehrer

Update: 10.9.3 behebt das Problem mit System CPython.

Dies wird durch das neueste Clang-Update von Apple verursacht, das heute mit Xcode 5.1 kam und viele, viele Menschen betrifft, also wird hoffentlich bald eine Lösung erscheinen.

Update: Ich hatte nicht erwartet, dass dies so viel Aufmerksamkeit erregen würde, aber hier sind weitere Details: Clang 3.4 Apple liefert standardmäßig Fehler bei unbekannten Flags aus, aber CPython erstellt Module mit demselben Satz von Flags, mit denen es ursprünglich kompiliert wurde. Das System CPython wurde mit mehreren Flags kompiliert, die Clang unbekannt sind, wodurch dieses Problem verursacht wird. Im Folgenden sind die aktuellen Mavericks (10.9.2) CPython-Kompilierungsflags aufgeführt:

-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

Um dieses Problem zu beheben, haben Sie einige Möglichkeiten:

  • Hinzufügen ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future zu Ihren Compiler-Flags.
  • Passieren CFLAGS=""
  • Entfernen Sie die nicht unterstützten Flags aus der sysconfigdata.py (wie in einer anderen Antwort angegeben).
  • Kompilieren Sie eine neue Python mit selbstgebraut.
  • Warten Sie auf das nächste OS X-Update, das angeblich neu kompiliertes Python/Ruby enthält, um dieses Problem für Systemlaufzeiten zu beseitigen.

  • @paul, ah danke für die info. Gibt es eine Möglichkeit, über den Status dieses Ihnen bekannten Fehlers auf dem Laufenden zu bleiben? Ich würde Clang gerne aktualisieren, sobald ein Fix verfügbar ist.

    – Tino

    11. März 2014 um 16:18 Uhr

  • Das ist kein Clang-Bug, das ist ein Distributions-Bug von Apple. Apple sollte keine Python-Version verteilen, die mit Einstellungen erstellt wurde, die nicht mit Clang 3.4 kompatibel sind. Es wird ordnungsgemäß behoben, indem Apple den Python-Interpreter aktualisiert.

    – Bis

    11. März 2014 um 18:56 Uhr

  • Sie können dies durch Ausführen überprüfen python-config --cflags. Wenn es auf Apples Standard-Python ausgeführt wird, werden Optionen angezeigt, die Clang 3.4 unbekannt sind.

    – Bis

    11. März 2014 um 18:58 Uhr

  • Gibt es eine Lösung dafür, wenn ich bereits auf Xcode 5.1 aktualisiert habe? Das Hinzufügen dieser Exporte in bashrc wie oben vorgeschlagen schien das Problem nicht zu lösen.

    – Sean Danzeiser

    11. März 2014 um 23:30 Uhr

  • An Sean: Auf meinem Mac habe ich ~/.bash_profile nicht bashrc, aber dazu müssten Sie die Shell neu starten, um wirksam zu werden.

    – peterjc

    12. März 2014 um 10:00 Uhr

xCode 5.1

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

  • Toll, das hilft mir beim Anbringen des Kissens

    – Nambaa

    18. März 2014 um 4:42 Uhr

  • Ich hatte viele Probleme mit der Installation von psycog2 über pip und das hat das Problem für mich behoben. Vielen Dank.

    – Brandon Aaskov

    19. März 2014 um 19:24 Uhr

  • Wenn Sie sudo verwenden, muss sudo vor dem Festlegen der Umgebungsvariablen ausgeführt werden. (dh, sudo ARCHFLAGS=... pip install ...)

    – Joe Freemann

    1. April 2014 um 13:13 Uhr

  • Arbeitete für die Installation von Pycrypto. Vielen Dank!

    – Chris Sears

    7. April 2014 um 23:22 Uhr

Benutzer-Avatar
Benutzer3405479

Hier ist eine Problemumgehung, bei der das Flag aus der Python-Installation entfernt wird.

Im /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py sind mehrere Orte, wo die -mfused-madd / -mno-fused-madd Flagge ist gesetzt.

Bearbeiten Sie diese Datei und entfernen Sie alle Verweise auf das Flag, mit dem Ihre Zusammenstellung funktionieren sollte:

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

Sie müssen die entsprechende löschen _sysconfigdata.pyc und _sysconfigdata.pyo Dateien ebenfalls – zumindest auf meinem System wurden diese Dateien nicht automatisch neu erstellt:

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

Beachten Sie, dass Sie Root-Zugriff verwenden müssen, um diese Änderungen vorzunehmen.

Benutzer-Avatar
Ben

Ich habe auch die Vorstellung von Systempython von seinen ursprünglichen Compiler-Flags bearbeitet (wie es @user3405479 getan hat). Anstelle eines Editors habe ich Befehlszeilentools verwendet, um die Datei “an Ort und Stelle” zu bearbeiten (der Inode ändert sich). Ich habe auch neue Pyo- und Pyc-Dateien kompiliert, anstatt sie gelöscht zu lassen.

Die folgenden Befehle werden als root ausgeführt, zum Beispiel unter 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

  • Bis Apple seine Python-Installation repariert, scheint dies die praktischste und endgültige Lösung zu sein. Danke für die komplette Anleitung!

    – ᴠɪɴᴄᴇɴᴛ

    18. April 2014 um 14:15 Uhr

Benutzer-Avatar
Nathan Aktien

Ich habe Homebrew verwendet, um postgresql zu installieren, und wollte dann psycopg2 in das vom System bereitgestellte Python 2.7 auf Mavericks installieren. Um das zum Laufen zu bringen, habe ich Folgendes ausgeführt:

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

  • Bis Apple seine Python-Installation repariert, scheint dies die praktischste und endgültige Lösung zu sein. Danke für die komplette Anleitung!

    – ᴠɪɴᴄᴇɴᴛ

    18. April 2014 um 14:15 Uhr

Zumindest Apple ist sich dessen bewusst, da dieses Problem in Xcode 5.1 diskutiert wird Versionshinweise (Compiler-Abschnitt). Erwarten Sie ein aktualisiertes Python und Ruby im nächsten Betriebssystem-Update (Daumen drücken!). Beachten Sie auch, dass die -Wno-error=unused-command-line-argument-hard-error-in-future flag ist als vorübergehende Problemumgehung gedacht und wird in Zukunft verschwinden (hoffentlich, nachdem das System Python repariert wurde!).

Wenn Sie wie ich ein Betreuer von Python-Paketen sind und Ihren Benutzern die Mühe ersparen möchten, dies selbst zu umgehen, finden Sie hier eine Lösung (neben der Bereitstellung von Binärrädern/Eiern), die in Ihre Anwendung passt setup.py Datei:

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

1069280cookie-checkClang-Fehler: Unbekanntes Argument: ‘-mno-fused-madd’ (Fehler bei der Installation des Python-Pakets)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy