dentang kesalahan: argumen tidak dikenal: '-mno-fused-madd' (kegagalan instalasi paket python)

272

Saya mendapatkan kesalahan berikut ketika mencoba menginstal psycopg2melalui pip pada Mavericks 10.9:

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

Tidak yakin bagaimana melanjutkan dan mencari kesalahan khusus ini di sini dan di tempat lain. Bantuan apa pun sangat kami hargai!

Ini adalah output lengkap dari 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
tino
sumber
1
Saya memiliki kesalahan yang sama ketika membangun pustaka C: dentang: kesalahan: argumen tidak diketahui: '-mno-fused-madd' ...
huync
10
Masalah ini terjadi pada paket Python yang menyertakan modul C, bukan hanya psycopg2.
alastair

Jawaban:

440

Anda dapat memberitahu dentang untuk tidak mengangkat ini sebagai kesalahan dengan mengatur variabel lingkungan berikut kompilasi sebelumnya:

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

Maka pip install psycopg2harus bekerja.

Saya memiliki hal yang sama ketika mencoba pip install lxml.

Sunting: jika Anda menginstal sebagai superuser (yang kemungkinan akan terjadi jika Anda mencoba untuk menambahkan /Library/Python/2.7/site-packages, distribusi Python asli yang diinstal pabrik Apple yang dikirimkan dengan OS X, daripada ke beberapa distribusi Python lain yang kemudian Anda instal sendiri ), maka Anda perlu melakukannya, seperti yang dijelaskan oleh @Thijs Kuipers dalam komentar di bawah:

sudo -E pip install psycopg2

atau yang setara, untuk nama paket lain apa pun yang mungkin Anda gantikan psycopg2.

UPDATE [2014-05-16]: Apple telah memperbaiki masalah ini dengan sistem Python yang diperbarui (2.7, 2.6, dan 2.5) OS X 10.9.3sehingga solusi tidak diperlukan lagi saat menggunakan Mavericks dan Windows terbaru Xcode 5.1+. Namun, sampai sekarang, solusi masih diperlukan untuk OS X 10.8.x(Mountain Lion, saat ini 10.8.5) jika Anda menggunakannya di Xcode 5.1+sana.

pengguna3405578
sumber
2
Saya punya masalah menginstal greenletdengan pip ini. Ini memperbaikinya, terima kasih.
jbrown
1
Ini bekerja untuk saya sebagai perbaikan langsung, terima kasih! Lihat jawaban Paul Kehrer untuk penjelasan tentang sumber masalahnya.
tino
5
Jika Anda menginstal sebagai root, Anda perlu mengatur flag untuk pengguna root.
ErikAndren
48
Saya harus menambahkan -Eflag sudountuk memuat variabel lingkungan untuk eksekusi root seperti kata @ErikAndren. Jadi, pertama dua exportpernyataan di atas , diikuti oleh sudo -E doSomething.
Thijs Kuipers
1
Menyelamatkan hidupku dengan Bantal. Terima kasih!
Sloy
76

Pembaruan: 10.9.3 menyelesaikan masalah dengan sistem CPython.

Ini disebabkan oleh pembaruan dentang terbaru dari Apple yang datang dengan Xcode 5.1 hari ini dan memengaruhi banyak orang, jadi semoga perbaikannya akan segera muncul.

Pembaruan: Tidak mengharapkan ini mendapat begitu banyak perhatian, tapi di sini lebih detail: dentang 3.4 Apple mengirimkan default untuk kesalahan pada flag yang tidak dikenal, tetapi CPython membangun modul menggunakan set flag yang sama seperti yang telah dikompilasi sebelumnya. Sistem CPython dikompilasi dengan beberapa flag yang tidak diketahui oleh dentang, sehingga menyebabkan masalah ini. Berikut ini adalah flag kompilasi Mavericks (10.9.2) CPython saat ini:

-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

Untuk mengatasi masalah ini, Anda memiliki beberapa opsi:

  • Tambahkan ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-futureke flag kompilasi Anda.
  • Lulus CFLAGS=""
  • Lepaskan flag yang tidak didukung dari sysconfigdata.py (seperti yang tercantum dalam jawaban lain).
  • Kompilasi python baru menggunakan homebrew .
  • Tunggu pembaruan OS X berikutnya, yang dikabarkan menyertakan Python / Ruby yang telah dikompilasi ulang untuk menghapus masalah ini untuk runtime sistem.
Paul Kehrer
sumber
@ paul, ah terima kasih untuk informasinya. adakah cara untuk tetap mengetahui status bug ini yang Anda ketahui? saya ingin memperbarui dentang segera setelah perbaikan tersedia.
tino
2
Itu bukan bug dentang, itu adalah bug distribusi Apple. Apple tidak boleh mendistribusikan versi Python yang telah dibangun dengan pengaturan yang tidak kompatibel dengan dentang 3.4. Itu diperbaiki dengan benar oleh Apple memperbarui juru bahasa Python.
Hingga
Anda dapat memvalidasi ini dengan menjalankan python-config --cflags. Saat dijalankan pada Python default Apple, itu akan menampilkan opsi yang tidak diketahui untuk berdentang 3.4.
Hingga
apakah ada solusi untuk ini jika saya sudah memperbarui ke Xcode 5.1? Menambahkan ekspor tersebut ke bashrc seperti yang diusulkan di atas tampaknya tidak menyelesaikan masalah.
Sean Danzeiser
Untuk Sean: Di Mac saya, saya ~/.bash_profilebelum bashrc, tetapi ini akan membutuhkan Anda untuk me-restart shell untuk berlaku.
peterjc
63

xCode 5.1

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2
Isis
sumber
Hebat, itu membantu saya memasang bantal
Nyambaa
Saya mengalami banyak masalah dengan menginstal psycog2 via pip dan ini memperbaiki masalah saya. Terima kasih banyak
Brandon Aaskov
2
Jika Anda menggunakan sudo, sudo harus masuk sebelum mengatur variabel lingkungan. (yaitu, sudo ARCHFLAGS=... pip install ...)
Joe Freeman
Bekerja untuk menginstal pycrypto. Terima kasih!
Chris Sears
15

Berikut ini adalah pekerjaan di sekitar yang melibatkan menghapus bendera dari instalasi python.

Di /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.pyadalah beberapa tempat di mana -mfused-madd/ -mno-fused-maddflag diatur.

Edit file ini dan hapus semua referensi yang menandai kompilasi Anda akan berfungsi:

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

Anda perlu menghapus file yang sesuai _sysconfigdata.pycdan _sysconfigdata.pyojuga - setidaknya di sistem saya file-file ini tidak secara otomatis dibangun kembali:

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

Catatan yang harus menggunakan akses root untuk melakukan perubahan itu.

pengguna3405479
sumber
2
Ini memang berhasil! Saya harus menghapus _sysconfigdata.pyc dan _sysconfigdata.pyo
isubuz
4

Saya juga mengedit sistem python tentang flag kompilasi aslinya (seperti yang dilakukan @ user3405479). Alih-alih seorang editor saya menggunakan alat baris perintah untuk mengedit file "di tempat" (inode memang berubah). Saya juga mengkompilasi file pyo dan pyc baru alih-alih membiarkannya dihapus.

Perintah berikut dijalankan sebagai root, misalnya di bawah 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

Ben
sumber
Sampai Apple memperbaiki pemasangan Python-nya, ini sepertinya solusi paling praktis dan pasti. Terima kasih untuk instruksi lengkapnya!
ᴠɪɴᴄᴇɴᴛ
4

Saya menggunakan homebrew untuk menginstal postgresql, dan kemudian ingin menginstal psycopg2 ke dalam sistem yang disediakan python 2.7 di Mavericks. Agar berhasil, saya akhirnya menjalankan ini:

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

Setidaknya Apple mengetahui hal ini karena masalah ini dibahas dalam Catatan Rilis Xcode 5.1 (bagian Kompiler). Harapkan Python dan Ruby yang diperbarui di pembaruan OS berikutnya (semoga saja!). Perhatikan juga bahwa -Wno-error=unused-command-line-argument-hard-error-in-futureflag ini dimaksudkan sebagai solusi sementara dan akan hilang di masa mendatang (semoga setelah sistem Python diperbaiki!).

Jika Anda adalah pengelola paket Python seperti saya dan ingin menyelamatkan pengguna Anda dari kesulitan untuk mengatasinya sendiri, berikut adalah solusinya (selain menyediakan roda biner / telur) yang masuk ke setup.pyfile Anda :

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},
    ...
)
llude
sumber
1

Tidak ada solusi di atas yang berfungsi untuk saya. Situasi saya sedikit berbeda. Saya mencoba menginstal rdiff-backup via homebrew ketika saya menerima pesan kesalahan ini.

Saya tampaknya memiliki kedua python default Apple (2.7.5 @ / usr / bin / python) dan python Homebrew (2.7.6 @ /usr/local/Cellar/python/2.7.6/bin/python), tetapi kesalahannya muncul dari python Apple.

Untuk memperbaiki masalah, pada dasarnya saya mengganti binari python.

Saya melakukan ini melalui sudo:

  • cp / usr / bin / python / usr / bin / python_orig
  • ln -s /usr/local/Cellar/python/2.7.6/bin/python / usr / bin / python

Kemudian, 'buat instalasi rdiff-backup' berhasil tanpa kesalahan.

Akhirnya, saya melakukan "mv / usr / bin / python_orig / usr / bin / python" untuk mengembalikan semuanya kembali.

Hans Wolkenkratzer
sumber
1

Anda mungkin menggunakan 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

Solusi termudah buka www.python.org dan instal Python 2.7.6 yang kompatibel dengan LLVM 5.1.

Kemudian bersulang lingkungan virtual lama Anda rmvirtualenv {virtual_env_name},.

Kemudian buat virtual env baru ..

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

pip akan bekerja dengan baik setelah ini.

affablebloke
sumber
Mungkin ingin mengekstrak persyaratan dari env lama Anda sebelum memanggangnya;) pip freeze> requirement.txt
GreenAsJade
1

Amazon Linux [AWS EC2]

Mencoba untuk pip install paramikopada Amazon Linux AMI release 2016.09memberikan saya sebuah kesalahan yang menyertakan link ke SO posting ini. Jadi, meskipun tidak sesuai dengan Judul OP, saya akan membagikan jawabannya.

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

Keemasan!

Bruno Bronosky
sumber
0

Saya menggunakan paket python homebrew . Bekerja dengan baik setelah kompilasi ulang.

Vitaliy Khamin
sumber
0

Variasi pada perbaikan _sysconfigdata.py: gunakan lingkungan virtual

cp /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py ${VIRTUAL_ENV}/lib/python2.7/_sysconfigdata.py

Kemudian edit salinan Anda di $ {VIRTUAL_ENV} /lib/python2.7/_sysconfigdata.py

Saya menghapus semua kejadian '-mno-menyatu-madd' dan kemudian membangun bekerja di virtualenv itu.

Tidak perlu root!

bolson
sumber
0

Bagi saya, flag buruk secara eksplisit diberikan di Makefile paket. Jadi saya harus mengedit makefile untuk menghapus flag yang tidak dikenal dari paket erroring.

mike
sumber
0

Memutakhirkan Homebrew dan menginstal unixodbc menyelesaikannya untuk saya

brew upgrade
brew install unixodbc
Vipassana Vijayarangan
sumber