尝试通过pip on Mavericks 10.9安装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('\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
答案 0 :(得分:438)
您可以通过在编译之前设置以下环境变量来告诉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]:Apple已在OS X 10.9.3
中使用更新的系统Pythons(2.7,2.6和2.5)解决了此问题,因此在使用最新的Mavericks和{{时,不再需要解决方法1}}。但是,截至目前,如果您在Xcode 5.1+
使用OS X 10.8.x
,则Xcode 5.1+
(Mountain Lion,目前为10.8.5)仍需要解决方法。
答案 1 :(得分:76)
更新:10.9.3解决了系统CPython的问题。
这是由今天Xcode 5.1附带的Apple最新铿锵声更新造成的,影响了许多人,所以很快就会出现修复。
更新:没想到会引起如此多的关注,但是这里有更多的细节:clang 3.4 Apple默认为未知标志出错,但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=""
答案 2 :(得分:63)
xCode 5.1
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
答案 3 :(得分: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
请注意,必须使用root访问权限才能进行这些更改。
答案 4 :(得分:4)
我还编辑了系统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
答案 5 :(得分:4)
我用homebrew安装postgresql,然后想在psver上安装psycopg2到系统提供的python 2.7。为了实现这一点,我最终运行了这个:
sudo ARCHFLAGS="-arch x86_64" CFLAGS=-Wunused-command-line-argument-hard-error-in-future pip install psycopg2
答案 6 :(得分:2)
至少Apple意识到这一点,因为Xcode 5.1 Release Notes(编译器部分)中讨论了这个问题。在下一次操作系统更新中期待更新的Python和Ruby(手指交叉!)。另请注意,-Wno-error=unused-command-line-argument-hard-error-in-future
标志是一个临时的解决方法,将来会消失(希望在修复系统Python之后!)。
如果您是像我这样的Python软件包维护者,并希望为用户节省解决这个问题的麻烦,这里有一个解决方案(除了提供二进制轮子/鸡蛋)进入您的setup.py
文件:< / p>
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},
...
)
答案 7 :(得分:1)
以上解决方案均不适合我。我的情况略有不同。当我收到此错误消息时,我试图通过自制软件安装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做到的:
然后,'brew install rdiff-backup'成功,没有任何错误。
最后,我做了“mv / usr / bin / python_orig / usr / bin / python”以恢复所有内容。
答案 8 :(得分: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并安装与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应该在此之后正常工作。
答案 9 :(得分:1)
在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
答案 10 :(得分:0)
我使用了homebrew python包。 重新制作后效果很好。
答案 11 :(得分: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&#39;然后构建在virtualenv中工作。
不需要根!
答案 12 :(得分:0)
对我来说,坏标志是在包的Makefile中明确给出的。因此,我必须编辑makefile以从错误包中删除无法识别的标志。
答案 13 :(得分:0)
升级Homebrew并安装unixodbc为我解决了它
brew upgrade
brew install unixodbc