Помилка кланг: невідомий аргумент: '-mno-fused-madd' (помилка установки пакета python)


272

Я отримую таку помилку при спробі встановлення psycopg2через pip на Mavericks 10.9:

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

Не знаєте, як діяти і шукали тут і десь цю конкретну помилку. Будь-яка допомога дуже цінується!

Ось повний вихід з 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
У мене така ж помилка при створенні бібліотеки C: clang: error: unknown argument: '-mno-fused-madd' ...
huync

10
Ця проблема виникає з будь-яким пакетом Python, який включає модуль C, а не лише psycopg2.
alastair

Відповіді:


440

Ви можете сказати clang не підвищувати це як помилку, встановивши такі змінні середовища перед компіляцією:

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

Тоді pip install psycopg2слід працювати.

У мене було те саме при спробі pip install lxml.

Редагувати: якщо ви встановлюєте як суперпользователь (що, швидше за все, станеться у випадку, якщо ви намагаєтесь додати /Library/Python/2.7/site-packages, - рідний заводський дистрибутив Apple, встановлений на заводі Apple, що постачається з OS X, а не якийсь інший дистрибутив Python, який ви згодом встановили самостійно ), тоді вам потрібно буде зробити, як описано у @Thijs Kuipers в коментарях нижче:

sudo -E pip install psycopg2

або еквівалент, для будь-якої іншої назви пакета, яку ви можете замінити psycopg2.

ОНОВЛЕННЯ [2014-05-16]: Apple вирішила цю проблему оновленою системою Pythons (2.7, 2.6 та 2.5), OS X 10.9.3тому вирішення проблем більше не потрібно використовувати новітні версії Mavericks та Xcode 5.1+. Однак, на даний момент, вирішення все ще потрібно для OS X 10.8.x(Гірський лев, зараз 10.8.5), якщо ви використовуєте Xcode 5.1+там.


2
У мене виникла ця проблема з установкою greenletз pip. Це виправило, спасибі.
jbrown

1
Це працювало для мене як негайне виправлення, дякую! Дивіться відповідь Пола Керера для пояснення джерела проблеми.
тино

5
Якщо ви встановлюєте як root, вам потрібно встановити прапори для користувача root.
ЕрікАндрен

48
Мені довелося додати -Eпрапор, щоб sudoзавантажити змінні середовища для виконання root, як-от @ErikAndren. Тож спочатку два вищезгадані exportтвердження, а далі sudo -E doSomething.
Thijs Kuipers

1
Врятувало мені життя Подушкою. Дякую!
Слон

76

Оновлення: 10.9.3 вирішує проблему із системним CPython.

Це спричинено останнім оновленням кланг від Apple, яке сьогодні надійшло з Xcode 5.1 і впливає на багатьох, багатьох людей, тому, сподіваємось, виправлення з’явиться незабаром.

Оновлення: Не очікував, що це приверне так багато уваги, але ось детальніше: clang 3.4 Apple постачає за замовчуванням помилки на невідомих прапорах, але CPython будує модулі, використовуючи той самий набір прапорів, з яким був складений спочатку. Системний CPython був складений з декількох прапорів, які невідомі клангом, що спричинило цю проблему. Нижче наведені поточні прапори компіляції 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

Для вирішення цієї проблеми у вас є кілька варіантів:

  • Додайте ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-futureдо своїх прапорів компіляції.
  • Перехід CFLAGS=""
  • Стріпте непідтримувані прапори з sysconfigdata.py (як зазначено в іншій відповіді).
  • Складіть новий пітон за допомогою домашньої мови .
  • Зачекайте наступного оновлення OS X, до якого, за чутками, є перекомпільований Python / Ruby, щоб видалити цю проблему під час виконання системи.

@paul, ах, дякую за інформацію. чи можна бути в курсі статусу цієї помилки, про яку ви знаєте? Я хотів би оновити кланг, як тільки виправлення з'явиться.
тино

2
Це не кланг-помилка, а помилка розповсюдження Apple. Apple не повинна розповсюджувати версію Python, яка була побудована з налаштуваннями, несумісними з пунктом 3.4. Це правильно виправлено шляхом оновлення інтерпретатора Python від Apple.
До

Ви можете перевірити це, запустивши python-config --cflags. Під час запуску на Python за замовчуванням Apple, він покаже параметри, невідомі до клацання 3.4.
До

чи є рішення для цього, якщо я вже оновив Xcode 5.1? Додавання цього експорту до bashrc, як було запропоновано вище, начебто не вирішило проблему.
Шон Данзайзер

Для Шона: На моєму Mac я ~/.bash_profileне bashrc, але для того, щоб набути чинності, вам знадобиться перезапустити оболонку.
peterjc

63

xCode 5.1

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

чудово, що мені допоможуть встановити подушку
Nyambaa

У мене виникло багато проблем із встановленням psycog2 через pip, і це вирішило проблему для мене. Величезне спасибі
Брендон Аасков

2
Якщо ви використовуєте sudo, sudo потрібно перейти до встановлення змінної середовища. (тобто sudo ARCHFLAGS=... pip install ...)
Джо Фріман

Працював над встановленням пікрипто. Дякую!
Кріс Сірс

15

Ось робота, яка передбачає вилучення прапора з установки python.

У /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.pyкількох місцях, де -mfused-madd/-mno-fused-madd прапор.

Відредагуйте цей файл та видаліть усі посилання на цей прапор, який має працювати ваша компіляція:

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

Вам також потрібно видалити відповідні _sysconfigdata.pycта _sysconfigdata.pyoфайли - принаймні в моїй системі ці файли не були автоматично перероблені:

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

Зауважте, що для внесення цих змін потрібно використовувати кореневий доступ.


2
Це справді спрацювало! Мені довелося видалити і _sysconfigdata.pyc, і _sysconfigdata.pyo
isubuz

4

Я також відредагував уявлення системного пітона про його оригінальні прапори компіляції (як це робив @ user3405479). Замість редактора я застосував інструменти командного рядка для редагування файлу "на місці" (inode не змінюється). Я також компілював нові файли pyo та pyc замість того, щоб залишати їх видаленими.

Наступні команди виконуються як корінь, наприклад під 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


Поки Apple не виправить встановлення Python, це здається найбільш практичним і остаточним рішенням. Дякуємо за повну інструкцію!
ᴠɪɴᴄᴇɴᴛ

4

Я використовував домашню мову для встановлення postgresql, а потім хотів встановити psycopg2 на наданий системою python 2.7 на Mavericks. Щоб змусити це працювати, я закінчився цим:

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

2

Принаймні, Apple знає про це, оскільки ця проблема обговорюється в примітках до випуску Xcode 5.1 (розділ "Компілятор"). Очікуйте оновлених Python та Ruby у наступному оновлення ОС (пальці схрещені!). Також візьміть до уваги, що -Wno-error=unused-command-line-argument-hard-error-in-futureпрапор призначений для тимчасового вирішення і зникне в майбутньому (сподіваємось, після встановлення системи Python!).

Якщо ви такий, хто підтримує пакет Python, як я, і хочете врятувати ваших користувачів без проблем працювати над цим, ось рішення (крім надання двійкових коліс / яєць), яке входить у ваш 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},
    ...
)

1

Жодне з перерахованих вище рішень не працювало для мене. Моя ситуація дещо інша. Коли я отримав це повідомлення про помилку, я намагався встановити rdiff-резервну копію через homebrew.

У мене, мабуть, є як за замовчуванням python від Apple (2.7.5 @ / usr / bin / python), так і python Homebrew (2.7.6 @ /usr/local/Cellar/python/2.7.6/bin/python), але помилка надходить від пітона Apple.

Щоб вирішити проблему, я в основному перемикав бінарні файли пітона.

Я зробив це через sudo:

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

Тоді "варити інсталяцію rdiff-backup" вдалося без помилок.

Нарешті, я зробив "mv / usr / bin / python_orig / usr / bin / python", щоб повернути все назад.


1

Ви, мабуть, на 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

Найпростіше рішення перейдіть на сторінку www.python.org та встановіть Python 2.7.6, сумісний з LLVM 5.1.

Потім тост вашого старого віртуального середовища, rmvirtualenv {virtual_env_name} .

Потім створіть нове віртуальне оточення ..

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

піп повинен добре працювати після цього.


Ви можете витягнути вимоги зі своєї старої телевізійної програми перед тим, як прожарити її;) pip freeze> требования.txt
GreenAsJade

1

Amazon Linux [AWS EC2]

Намагаючись pip install paramikoна, Amazon Linux AMI release 2016.09дав мені помилку, яка включала посилання на цю публікацію SO. Тож, незважаючи на те, що він не відповідає назві ОП, я поділюсь відповіддю.

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

Золотий!



0

Варіант виправлення _sysconfigdata.py: використання віртуального середовища

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

Потім відредагуйте свою копію на $ {VIRTUAL_ENV} /lib/python2.7/_sysconfigdata.py

Я усунув усі випадки "-mno-fused-madd", а потім будував роботу в цій virtualenv.

Корінь не потрібен!


0

Для мене погані прапори були явно вказані в Makefile пакету. Тому мені довелося відредагувати makefile, щоб видалити нерозпізнаний прапор із пакету помилок.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.