铛错误:未知参数:'-mno-fused-madd'(python软件包安装失败)

试图在小牛10.9上通过pip安装psycopg2时出现以下错误:

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

不知道如何继续,并在这里和其他地方search这个特定的错误。 任何帮助深表感谢!

这是来自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 

您可以通过在编译之前设置以下环境variables来告诉clang不要将其作为错误提出:

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

然后pip install psycopg2应该工作。

当我尝试pip install lxml时,我也一样。

编辑:如果您以超级用户身份进行安装(如果您尝试附加到/Library/Python/2.7/site-packages ,这是本地的Apple工厂安装的Python发行版,它随OS X一起提供,而不是你自己随后安装了一些其他的Python发行版),那么你将需要这样做,正如@Thijs Kuipers在下面的评论中所描述的那样:

 sudo -E pip install psycopg2 

或者相当于其他任何包装名称,而不是psycopg2

更新[2014-05-16]:苹果已经解决了OS X 10.9.3更新后的系统python( Xcode 5.1+和2.5)的问题,所以当使用最新的Mavericks和Xcode 5.1+时,解决方法已经不再需要了。 但是,到目前为止,如果您在那里使用Xcode 5.1+OS X 10.8.x (Mountain Lion,目前为10.8.5)仍然需要解决方法。

更新:10.9.3解决了系统CPython的问题。

这是由于苹果公司今天发布的最新版本的更新引起的,它影响到很多人,所以很快就会有一个修复程序出现。

更新:没有期望得到这么多的关注,但这里有更多的细节:铿锵3.4苹果出货默认错误的未知标志,但CPython使用最初编译的同一组标志编译模块。 系统CPython编译时有几个铛声未知的标志,从而导致这个问题。 以下是目前小牛(10.9.2)CPython编译标志:

 -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 

要解决这个问题,你有几个select:

  • ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future到您的编译标志中。
  • 通过CFLAGS=""
  • 从sysconfigdata.py中删除不支持的标志(如另一个答案中所述)。
  • 用自制软件编译一个新的python。
  • 等待下一个OS X更新,据传包括重新编译的Python / Ruby,以消除系统运行时的这个问题。

xCode 5.1

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

这是一个解决方法,涉及从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文件 – 至less在我的系统中,这些文件不会自动重build:

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

请注意,必须使用root权限来进行这些更改。

我也编辑了系统python的原始编译标志的概念(@ user3405479)。 我用命令行工具来编辑文件“in place”(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

我用自制软件安装postgresql,然后想把psycopg2安装到系统提供的小牛2.7上。 为了得到这个工作,我结束了这个运行:

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

至less苹果知道这个问题在Xcode 5.1 发行说明 (编译器一节)中讨论。 在下一次操作系统更新中,预计会更新Python和Ruby(手指交叉!)。 另外请注意, -Wno-error=unused-command-line-argument-hard-error-in-future标志是暂时的解决方法,将来会消失(希望在系统Python被修复之后!)。

如果你是像我这样的Python软件包维护者,并且想要为用户解决这个问题,那么下面是一个解决scheme(除了提供二进制轮子/蛋)进入你的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 (eg -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}, ... ) 

上述解决scheme都不适合我。 我的情况稍有不同。 我试图通过自制软件安装rdiff-backup,当我得到这个错误信息。

我显然有苹果的默认Python(2.7.5 @ / usr / bin / python)和Homebrew的Python(2.7.6 @ /usr/local/Cellar/python/2.7.6/bin/python),但错误来了来自苹果的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 install rdiff-backup'成功了,没有任何错误。

最后,我做了“mv / usr / bin / python_orig / usr / bin / python”来恢复一切。

你可能在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 

最简单的解决scheme请访问www.python.org并安装与LLVM 5.1兼容的Python 2.7.6。

然后敬酒您的旧虚拟环境, rmvirtualenv {virtual_env_name}

然后做一个新的虚拟环境..

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

点子应该在这之后正常工作。

Amazon Linux [AWS EC2]

试图在Amazon Linux AMI release 2016.09 pip install paramikopip install paramiko给了我一个错误,包括一个链接到这个SOpost。 所以,即使它不符合OP的标题,我将分享答案。

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

金!

我用自制软件包python包。 重新压缩后工作良好。

_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中工作。

没有根需要!

对我来说,在包的Makefile中明确地给出了坏标志。 所以我不得不编辑makefile以从错误包中删除无法识别的标志。