Clang error: неизвестный аргумент: '-mno-fused-madd' (ошибка установки пакета python)
При попытке установить 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
Вы можете сказать clang, чтобы не поднять это как ошибку, установив следующие предварительные компиляции переменных среды:
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
Тогда pip install psycopg2
должен работать.
У меня было то же самое при попытке pip install lxml
.
Изменить: если вы устанавливаете как суперпользователь (что, вероятно, будет иметь место, если вы пытаетесь добавить к /Library/Python/2.7/site-packages
, родной Apple factory -установленный дистрибутив Python, который поставляется с OS X, а не какой-либо другой Python, который вы впоследствии установили самостоятельно), то вам нужно будет сделать, как описано @Thijs Kuipers в комментариях ниже:
sudo -E pip install psycopg2
или эквивалент, для любого другого имени пакета вы можете заменить вместо psycopg2
.
UPDATE [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
(Mountain Lion, в настоящее время 10.8.5), если вы используете Xcode 5.1+
там.
Ответ 2
Обновление: 10.9.3 разрешает проблему с системой CPython.
Это вызвано последним обновлением clang от Apple, которое поставляется с Xcode 5.1 сегодня и затрагивает многих, многих людей, поэтому, надеюсь, скоро появится исправление.
Обновление: не ожидал, что это привлечет столько внимания, но здесь более подробно: clang 3.4 Apple отправляет по умолчанию ошибки на неизвестные флаги, но CPython строит модули, используя тот же набор флагов, скомпилированных изначально. Система CPython была скомпилирована с несколькими флагами, которые неизвестны clang, что вызывает эту проблему. Ниже перечислены текущие флагов компиляции макросов Macvericks (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
к вашим флагам компиляции.
- Pass
CFLAGS=""
- Удалите неподдерживаемые флаги из файла sysconfigdata.py(как указано в другом ответе).
- Скомпилируйте новый python, используя homebrew.
- Подождите, пока следующее обновление ОС X, по слухам, включит перекомпилированный Python/Ruby, чтобы удалить эту проблему для системных запусков.
Ответ 3
xCode 5.1
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
Ответ 4
Вот работа, связанная с удалением флага из установки 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
Обратите внимание, что для внесения этих изменений необходимо использовать root-доступ.
Ответ 5
Я также отредактировал системное понятие python о его исходных флагах компиляции (как это сделал @user3405479). Вместо редактора я использовал инструменты командной строки для редактирования файла "на месте" (inode делает изменения). Я также скомпилировал новые файлы pyo и pyc вместо того, чтобы оставить их удаленными.
Следующие команды запускаются как root, например, под 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
Ответ 6
Я использовал homebrew для установки postgresql, а затем хотел установить psycopg2 в системный python 2.7 на Mavericks. Чтобы получить это, я закончил работу:
sudo ARCHFLAGS="-arch x86_64" CFLAGS=-Wunused-command-line-argument-hard-error-in-future pip install psycopg2
Ответ 7
По крайней мере 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},
...
)
Ответ 8
Ни один из вышеперечисленных решений не работал у меня. Моя ситуация несколько отличается. Я пытался установить rdiff-backup через homebrew, когда получил это сообщение об ошибке.
У меня, по-видимому, есть как Apple default python (2.7.5 @/usr/bin/python), так и пингтон Homebrew (2.7.6 @/usr/local/Cellar/python/2.7.6/bin/python), но ошибка произошла от Apple python.
Чтобы исправить проблему, в основном я переключил двоичные файлы python.
Я сделал это через sudo:
- cp/usr/bin/python/usr/bin/python_orig
- ln -s/usr/local/Cellar/python/2.7.6/bin/python/usr/bin/python
Затем "brew установить rdiff-backup" удалось без ошибок.
Наконец, я сделал "mv/usr/bin/python_orig/usr/bin/python", чтобы вернуть все обратно.
Ответ 9
Возможно, вы на 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}
.
Затем создайте новый виртуальный env..
mkvirtualenv --no-site-packages -p/Library/Frameworks/Python.framework/Versions/2.7/bin/python {virtual_env_name}
После этого pip должен работать нормально.
Ответ 10
Amazon Linux [AWS EC2]
Попытка pip install paramiko
on Amazon Linux AMI release 2016.09
дала мне ошибку, которая включала ссылку на эту запись SO. Поэтому, хотя это не соответствует заголовку OP, я собираюсь поделиться с ним ответом.
yum install libffi-devel
yum install gcc
yum install openssl-devel
pip install paramiko
Golden!
Ответ 11
Я использовал homebrew пакет python.
Хорошо работает после повторной сборки.
Ответ 12
Изменение в исправлении _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.
Не нужен корень!
Ответ 13
Для меня плохие флаги были явно указаны в пакете Makefile. Поэтому мне пришлось отредактировать make файл, чтобы удалить нераспознанный флаг из пакета ошибок.