clangエラー:不明な引数: '-mno-fused-madd'(Pythonパッケージのインストール失敗)


272

psycopg2Mavericks 10.9でpipを使用してインストールしようとすると、次のエラーが表示されます。

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
Cライブラリのビルド時に同じエラーが発生しました:clang:エラー:不明な引数: '-mno-fused-madd' ...
huync

10
この問題は、psycopg2だけでなく、Cモジュールを含むすべてのPythonパッケージで発生します。
alastair 2014年

回答:


440

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

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

その後、動作するpip install psycopg2はずです。

しようとしpip install lxmlたときに私は同じことがありました。

編集:スーパーユーザーとしてインストールする場合(これは/Library/Python/2.7/site-packages、後で自分でインストールした他のPythonディストリビューションではなく、OS Xに同梱されているネイティブのApple工場出荷時の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およびを使用する場合の回避策は不要になりましたXcode 5.1+。ただし、OS X 10.8.x現時点で(Mountain Lion、現在10.8.5)を使用している場合は、回避策が依然として必要ですXcode 5.1+


2
私はこの問題greenletをpipでインストールしていました。これで解決しました、ありがとう。
jbrown 2014年

1
これは私にとってすぐに修正として機能しました、ありがとう!問題の原因に関する説明については、Paul Kehrerの回答を参照してください。
tino、2014年

5
rootとしてインストールする場合は、rootユーザーのフラグを設定する必要があります。
ErikAndren 14年

48
@ErikAndrenが言ったように、ルート実行用の環境変数をロードするために-Eフラグを追加するsudo必要がありました。したがって、最初に上記の2つのexportステートメント、次にsudo -E doSomething
Thijs Kuipers 2014年

1
枕で私の命を救った。ありがとう!
Sloy、2014年

76

更新:10.9.3は、システムCPythonの問題を解決します。

これは、今日のXcode 5.1に同梱されているAppleの最新のclangアップデートが原因で発生し、多くの人に影響を及ぼしているため、近いうちに修正が表示されることを期待しています。

更新:これがそれほど注目されるとは期待していませんでしたが、詳細は次のとおりです。clang3.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=""
  • サポートされていないフラグをsysconfigdata.pyから削除します(別の回答に記載されています)。
  • homebrewを使用して新しいpythonをコンパイルするます。
  • システムランタイムのこの問題を取り除くために再コンパイルされたPython / Rubyを含むと噂されている次のOS Xアップデートを待ちます。

@paul、ああ情報ありがとう。あなたが知っているこのバグのステータスを最新の状態に保つ方法はありますか?修正が利用可能になり次第、clangを更新したいと思います。
tino 2014年

2
これはclangのバグではなく、Appleの配布バグです。Appleは、clang 3.4と互換性のない設定でビルドされたPythonバージョンを配布しないでください。AppleがPythonインタープリターを更新することで適切に修正されます。
2014年

これを検証するには、を実行しpython-config --cflagsます。AppleのデフォルトのPythonで実行すると、clang 3.4では不明なオプションが表示されます。
2014年

Xcode 5.1に更新済みの場合、これに対する解決策はありますか?上記の提案に従ってこれらのエクスポートをbashrcに追加しても、問題は解決しなかったようです。
Sean Danzeiser 2014年

Seanへ:私のMacには~/.bash_profilebashrcがありませんが、有効にするにはシェルを再起動する必要があります。
peterjc 2014年

63

xCode 5.1

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

すばらしい、枕を取り付けるのに役立つ
Nyambaa '18

psycog2をpip経由でインストールするときに多くの問題がありましたが、これで問題が解決しました。どうもありがとう。
Brandon Aaskov、2014年

2
sudoを使用している場合、sudoは環境変数を設定する前に実行する必要があります。(つまり、sudo ARCHFLAGS=... pip install ...
Joe Freeman

pycryptoをインストールするために働いた。ありがとう!
クリスシアーズ

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アクセスを使用する必要があることに注意してください。


2
これは確かにうまくいきました!私は_sysconfigdata.pycと_sysconfigdata.pyoの両方を削除する必要がありました
isubuz

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


AppleがPythonのインストールを修正するまでは、これが最も実用的で決定的なソリューションのようです。完全な指示をありがとう!
'2014

4

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

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

2

この問題はXcode 5.1 リリースノート(コンパイラセクション)で説明されているため、少なくとも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},
    ...
)

1

上記の解決策のどれも私にとってはうまくいきませんでした。私の状況は少し異なります。このエラーメッセージが表示されたとき、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」を実行して、すべてを元に戻しました。


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は正常に動作します。


トーストする前に古い
環境

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

ゴールデン!



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'をすべて削除し、そのvirtualenvでビルドが機能しました。

ルートは必要ありません!


0

私にとって、不良フラグはパッケージのMakefileで明示的に指定されていました。そのため、makefileを編集して、認識できないフラグをエラーのあるパッケージから削除する必要がありました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.