clang 错误:未知参数:'-mno-fused-madd'(python 包安装失败)
- 2024-12-20 08:37:00
- admin 原创
- 78
问题描述:
尝试在 Mavericks 10.9 上通过 pip 安装时出现以下错误psycopg2
:
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('
', '
'), __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('
', '
'), __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
随 OS X 一起提供的原生 Apple 工厂安装的 Python 发行版,而不是您随后自己安装的其他 Python 发行版,则可能就是这种情况),然后您将需要按照@Thijs Kuipers 在下面的评论中所述执行操作:
sudo -E pip install psycopg2
或者等效项,用于您可能用来替换的任何其他包名称psycopg2
。
更新 [2014-05-16]:Apple 已通过更新的系统 Python(2.7、2.6 和 2.5)修复了此问题,OS X 10.9.3
因此在使用最新的 Mavericks 和 时不再需要此解决方法。但是,截至目前,如果您正在使用(Mountain Lion,目前为 10.8.5) ,Xcode 5.1+
则仍需要此解决方法。OS X 10.8.x
`Xcode 5.1+`
解决方案 2:
更新:10.9.3 解决了系统 CPython 的问题。
这是由 Apple 今天随 Xcode 5.1 发布的最新 clang 更新引起的,影响了很多人,所以希望很快能修复。
更新:没想到会引起如此多的关注,但这里有更多细节:Apple 发布的 clang 3.4 默认在未知标志上出错,但 CPython 使用最初编译时使用的同一组标志构建模块。系统 CPython 使用 clang 未知的几个标志进行编译,从而导致此问题。以下是当前的 Mavericks (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
要解决此问题,您有以下几种选择:
添加
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future
到您的编译标志。经过
CFLAGS=""
从 sysconfigdata.py 中删除不受支持的标志(如另一个答案中所述)。
使用homebrew编译一个新的 python 。
等待下一个 OS 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 n| diff -p _sysconfigdata.py - | patch -b
python -m py_compile _sysconfigdata.py
python -OO -m py_compile _sysconfigdata.py
popd
解决方案 6:
我使用 homebrew 安装了 postgresql,然后想将 psycopg2 安装到 Mavericks 上系统提供的 python 2.7 中。为了实现这一点,我最终运行了这个:
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:
上述解决方案对我都不起作用。我的情况略有不同。当我尝试通过 homebrew 安装 rdiff-backup 时,收到此错误消息。
我显然同时拥有 Apple 的默认 python(2.7.5 @ /usr/bin/python)和 Homebrew 的 python(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 install 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 并安装与 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}
此后 pip 应该可以正常工作。
解决方案 10:
亚马逊Linux [AWS EC2]
尝试pip install paramiko
打开时Amazon Linux AMI release 2016.09
出现错误,其中包含指向此 SO 帖子的链接。因此,即使它不符合 OP 的标题,我也会分享答案。
yum install libffi-devel
yum install gcc
yum install openssl-devel
pip install paramiko
解决方案 11:
我使用了自制的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”,然后构建就可以在该虚拟环境中进行了。
不需root!
解决方案 13:
对我来说,错误标志在软件包的 Makefile 中明确给出。因此,我必须编辑 Makefile 以从错误软件包中删除无法识别的标志。
解决方案 14:
升级 Homebrew 并安装 unixodbc 为我解决了这个问题
brew upgrade
brew install unixodbc
解决方案 15:
我在 Mac 上安装 M2 失败后来到这里
解决方案是添加到 ~/.zshrc
# Since M2
export DOCKER_DEFAULT_PLATFORM=linux/amd64
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件