web-dev-qa-db-ja.com

Clangエラー:未知の引数: '-mno-fusion-madd'(pythonパッケージのインストール失敗)

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('\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
268
tino

コンパイル前に次の環境変数を設定することで、clangにこれをエラーとして発生させないように指示できます。

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

そうすればpip install psycopg2はうまくいくはずです。

pip install lxmlを試すときにも同じことができました。

編集:もしあなたがスーパーユーザとしてインストールしているのなら(あなたが後でインストールした他のPythonディストリビューションではなく、OS Xに同梱されている/Library/Python/2.7/site-packagesに追加しようとしている場合がそうです) @Thijs Kuipersが以下のコメントで説明しているように、あなたはそれをする必要があるでしょう。

Sudo -E pip install psycopg2

psycopg2の代わりに他のパッケージ名を使ってもかまいません。

UPDATE [2014-05-16]:AppleはOS X 10.9.3のアップデートされたシステムPythons(2.7、2.6、および2.5)に関するこの問題を修正したので、最新のMavericksおよびXcode 5.1+を使用するときの回避策は不要になりました。ただし、現時点では、OS X 10.8.xを使用している場合は、Xcode 5.1+(Mountain Lion、現在は10.8.5)に対して引き続き回避策が必要です。

438
user3405578

アップデート:10.9.3はシステムCPythonの問題を解決します。

これは、今日Xcode 5.1に同梱されたAppleからの最新のclangアップデートが原因で、多くの、そして多くの人々に影響を及ぼしているので、うまくいけばすぐに修正が現れるでしょう。

更新日:これはそれほど注目を集めるとは思わなかったが、より詳細には次の通りである。クラン3.4 Appleはデフォルトで未知のフラグをエラーにするように出荷している。システム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からサポートされていないフラグを取り除きます(別の回答で説明されているように)。
  • 自作 を使用して新しいpythonをコンパイルします。
  • 次のOS Xアップデートを待ちます。これはシステムランタイムのためにこの問題を取り除くために再コンパイルされたPython/Rubyを含むと噂されています。
76
Paul Kehrer

xCode 5.1

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

これは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アクセスを使用しなければならないことに注意してください。

15
user3405479

私はpostgresqlをインストールするために自作を使用し、そしてMavericks上のシステム提供のpython 2.7にpsycopg2をインストールしたいと思いました。それを機能させるために、私はこれを実行してしまいました:

Sudo ARCHFLAGS="-Arch x86_64" CFLAGS=-Wunused-command-line-argument-hard-error-in-future pip install psycopg2
4
Nathan

私はまた、システム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

4
Ben

この問題はXcode 5.1 Release Notes (Compiler section)で説明されているので、少なくともAppleはこれを認識しています。次回のOSアップデートでは、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},
    ...
)
2
llude

あなたはおそらく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はうまく動くはずです。

1
affablebloke

上記の解決策のどれも私のために働きませんでした。私の状況は少し異なります。このエラーメッセージが表示されたとき、自作を介してrdiff-backupをインストールしようとしていました。

私はどうやらAppleのデフォルトの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"を実行しました。

1

Amazon Linux [AWS EC2]

pip install paramikoAmazon Linux AMI release 2016.09を実行しようとすると、このSO投稿へのリンクを含むエラーが発生しました。それで、たとえそれがOPのタイトルに合わないとしても、私は答えを共有するつもりです。

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

ゴールデン!

1
Bruno Bronosky

私にとっては、悪いフラグはパッケージのMakefileで明示的に与えられていました。そのため、エラーのあるパッケージから認識できないフラグを削除するために、メイクファイルを編集する必要がありました。

0
mike

私は 自作 pythonパッケージを使用しました。再コンパイルした後にうまく動作します。

0
Vitaliy Khamin

_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-fusion-madd'の出現をすべて削除してから、そのvirtualenvでビルドがうまくいった。

Rootは必要ありません。

0
bolson

Homebrewをアップグレードしてunixodbcをインストールすることで解決しました

brew upgrade
brew install unixodbc