lỗi clang: đối số không xác định: '-mno-fuses-madd' (lỗi cài đặt gói python)


272

Tôi gặp lỗi sau khi thử cài đặt psycopg2qua pip trên Mavericks 10.9:

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

Không chắc chắn làm thế nào để tiến hành và đã tìm kiếm ở đây và nơi khác cho lỗi cụ thể này. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao!

Đây là đầu ra hoàn chỉnh từ 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
Tôi có lỗi tương tự khi xây dựng thư viện C: clang: error: unknown argument: '-mno-fuses-madd' ...
huync

10
Sự cố này xảy ra với bất kỳ gói Python nào bao gồm mô-đun C, không chỉ psycopg2.
alastair

Câu trả lời:


440

Bạn có thể yêu cầu clang không nêu ra lỗi này bằng cách đặt các biến môi trường sau đây biên dịch trước:

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

Sau đó pip install psycopg2nên làm việc.

Tôi đã có cùng một khi cố gắng pip install lxml.

Chỉnh sửa: nếu bạn đang cài đặt dưới dạng siêu người dùng (có thể sẽ là trường hợp nếu bạn đang cố gắng thêm vào /Library/Python/2.7/site-packages, bản phân phối Python do nhà máy Apple cài đặt đi kèm với OS X, thay vì một bản phân phối Python khác mà bạn đã tự cài đặt sau đó ), sau đó bạn sẽ cần phải làm, như được mô tả bởi @Thijs Kuipers trong các bình luận bên dưới:

sudo -E pip install psycopg2

hoặc tương đương, cho bất kỳ tên gói nào khác mà bạn có thể thay thế psycopg2 .

CẬP NHẬT [2014-05-16]: Apple đã khắc phục sự cố này với hệ thống cập nhật Pythons (2.7, 2.6 và 2.5) OS X 10.9.3để giải pháp không còn cần thiết khi sử dụng Mavericks mới nhất và Xcode 5.1+. Tuy nhiên, cho đến thời điểm hiện tại, cách giải quyết vẫn được yêu cầu cho OS X 10.8.x(Mountain Lion, hiện tại là 10.8.5) nếu bạn đang sử dụng Xcode 5.1+ở đó.


2
Tôi đã có vấn đề này khi cài đặt greenletvới pip. Điều này đã sửa nó, cảm ơn.
jbrown

1
Điều này làm việc cho tôi như là một sửa chữa ngay lập tức, cảm ơn! Xem câu trả lời của Paul Kehrer để được giải thích về nguồn gốc của vấn đề.
tino

5
Nếu bạn cài đặt như root, bạn cần đặt cờ cho người dùng root.
ErikAndren

48
Tôi đã phải thêm -Ecờ để sudotải các biến môi trường để thực thi root như @ErikAndren nói. Vì vậy, đầu tiên hai exporttuyên bố nêu trên , tiếp theo sudo -E doSomething.
Thijs Kuipers

1
Cứu mạng tôi với Gối. Cảm ơn!
Sloy

76

Cập nhật: 10.9.3 giải quyết vấn đề với CPython hệ thống.

Điều này được gây ra bởi bản cập nhật clang mới nhất từ ​​Apple đi kèm với Xcode 5.1 ngày hôm nay và đang ảnh hưởng đến nhiều, nhiều người, vì vậy hy vọng bản sửa lỗi sẽ sớm xuất hiện.

Cập nhật: Không mong muốn điều này sẽ được chú ý nhiều như vậy, nhưng chi tiết hơn ở đây: clang 3.4 Apple đang vận chuyển mặc định lỗi cho các cờ không xác định, nhưng CPython xây dựng các mô-đun bằng cách sử dụng cùng một bộ cờ mà nó được biên dịch ban đầu. CPython hệ thống được biên dịch với một số cờ mà clang không xác định, do đó gây ra vấn đề này. Sau đây là các cờ biên dịch CPython Mavericks (10.9.2) hiện tại:

-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

Để giải quyết vấn đề này, bạn có một vài lựa chọn:

  • Thêm vào ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-futurecờ biên dịch của bạn.
  • Vượt qua CFLAGS=""
  • Tách các cờ không được hỗ trợ từ sysconfigdata.py (như được ghi chú trong câu trả lời khác).
  • Biên dịch một con trăn mới bằng cách sử dụng homebrew .
  • Đợi bản cập nhật OS X tiếp theo, được đồn đại bao gồm Python / Ruby được biên dịch lại để loại bỏ vấn đề này trong thời gian chạy hệ thống.

@paul, ah cảm ơn vì thông tin. Có cách nào để cập nhật tình trạng của lỗi này mà bạn biết không? Tôi muốn cập nhật tiếng kêu ngay khi có bản sửa lỗi.
tino

2
Đó không phải là lỗi clang, đó là lỗi phân phối của Apple. Apple không nên phân phối phiên bản Python đã được xây dựng với các cài đặt không tương thích với clang 3.4. Nó được sửa một cách chính xác bởi Apple cập nhật trình thông dịch Python.
Đến

Bạn có thể xác nhận điều này bằng cách chạy python-config --cflags. Khi được chạy trên Python mặc định của Apple, nó sẽ hiển thị các tùy chọn chưa biết đến clang 3.4.
Đến

Có giải pháp nào cho vấn đề này nếu tôi đã cập nhật lên Xcode 5.1 không? Thêm các xuất khẩu đó vào bashrc như đề xuất ở trên dường như không giải quyết được vấn đề.
Sean Danzeiser

Đối với Sean: Trên máy Mac của tôi, tôi ~/.bash_profilekhông có bashrc, nhưng điều này sẽ cần bạn khởi động lại hệ vỏ để có hiệu lực.
peterjc

63

xCode 5.1

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

thật tuyệt, điều đó giúp tôi cài đặt gối
Nyambaa 18/03/2016

Tôi đã gặp nhiều vấn đề với việc cài đặt psycog2 qua pip và điều này đã khắc phục sự cố cho tôi. Lời cảm ơn to lớn.
Brandon Aaskov

2
Nếu bạn đang sử dụng sudo, sudo cần phải đi trước khi đặt biến môi trường. (tức là sudo ARCHFLAGS=... pip install ...)
Joe Freeman

Làm việc để cài đặt pycrypto. Cảm ơn!
Chris Sears

15

Đây là một công việc xung quanh liên quan đến việc gỡ cờ khỏi cài đặt python.

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.pymột số nơi mà -mfused-madd/-mno-fused-madd cờ được đặt.

Chỉnh sửa tệp này và xóa tất cả các tham chiếu đến cờ đó, trình biên dịch của bạn sẽ hoạt động:

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

Bạn cũng cần xóa các tệp tương ứng _sysconfigdata.pyc_sysconfigdata.pyocác tệp - ít nhất trên hệ thống của tôi, các tệp này không tự động được xây dựng lại:

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

Lưu ý rằng phải sử dụng quyền truy cập root để thực hiện những thay đổi đó.


2
Điều này thực sự đã làm việc! Tôi đã phải xóa cả _sysconfigdata.pyc và _sysconfigdata.pyo
isubuz

4

Tôi cũng đã chỉnh sửa khái niệm của python hệ thống về các cờ biên dịch ban đầu của nó (như @ user3405479 đã làm). Thay vì một trình soạn thảo, tôi đã sử dụng các công cụ dòng lệnh để chỉnh sửa tệp "tại chỗ" (nút inode thay đổi). Tôi cũng đã biên dịch các tệp pyo và pyc mới thay vì để chúng bị xóa.

Các lệnh sau được chạy dưới dạng root, ví dụ dưới 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


Cho đến khi Apple sửa lỗi cài đặt Python, đây có vẻ là giải pháp thiết thực và dứt khoát nhất. Cảm ơn đã hướng dẫn đầy đủ!
ᴠɪɴᴄᴇɴᴛ

4

Tôi đã sử dụng homebrew để cài đặt postgresql và sau đó muốn cài đặt psycopg2 vào python 2.7 do hệ thống cung cấp trên Mavericks. Để làm việc đó tôi đã kết thúc việc này:

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

2

Ít nhất Apple nhận thức được điều này vì vấn đề này được thảo luận trong Ghi chú phát hành Xcode 5.1 (phần Trình biên dịch). Mong đợi một Python và Ruby được cập nhật trong bản cập nhật hệ điều hành tiếp theo (ngón tay đan chéo!). Cũng lưu ý rằng -Wno-error=unused-command-line-argument-hard-error-in-futurecờ có nghĩa là một cách giải quyết tạm thời và sẽ biến mất trong tương lai (hy vọng sau khi hệ thống Python được sửa chữa!).

Nếu bạn là người duy trì gói Python như tôi và muốn tiết kiệm cho người dùng của bạn những rắc rối khi tự khắc phục sự cố này, thì đây là một giải pháp (bên cạnh việc cung cấp bánh xe / trứng nhị phân) đi vào setup.pytệp của bạn :

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

Không có giải pháp nào ở trên làm việc cho tôi. Hoàn cảnh của tôi hơi khác. Tôi đã cố gắng cài đặt sao lưu dự phòng thông qua homebrew khi tôi nhận được thông báo lỗi này.

Tôi dường như có cả python mặc định của Apple (2.7.5 @ / usr / bin / python) và python của Homebrew (2.7.6 @ /usr/local/Cellar/python/2.7.6/bin/python), nhưng lỗi đã đến từ con trăn của Apple.

Để khắc phục sự cố, về cơ bản tôi đã chuyển các nhị phân python.

Tôi đã làm điều này thông qua sudo:

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

Sau đó, 'brew install rdiff-backup' đã thành công mà không có bất kỳ lỗi nào.

Cuối cùng, tôi đã "mv / usr / bin / python_orig / usr / bin / python" để hoàn nguyên mọi thứ trở lại.


1

Có lẽ bạn đang dùng 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

Giải pháp dễ nhất đi đến www.python.org và cài đặt Python 2.7.6 tương thích với LLVM 5.1.

Sau đó nướng bánh môi trường ảo cũ của bạn, rmvirtualenv {virtual_env_name} ,.

Sau đó tạo một env ảo mới ..

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

Pip nên hoạt động tốt sau này.


Có thể muốn trích xuất các yêu cầu từ env cũ của bạn trước khi nướng nó;) đóng băng pip>
tests.txt

1

Amazon Linux [AWS EC2]

Cố gắng pip install paramikotrên Amazon Linux AMI release 2016.09đã cho tôi một lỗi mà bao gồm một liên kết đến bài SO này. Vì vậy, mặc dù nó không phù hợp với Tiêu đề của OP, tôi sẽ chia sẻ câu trả lời.

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

Vàng!



0

Biến thể trên bản sửa lỗi _sysconfigdata.py: sử dụng môi trường ảo

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

Sau đó chỉnh sửa bản sao của bạn tại $ {VIRTUAL_ENV} /lib/python2.7/_sysconfigdata.py

Tôi đã xóa tất cả các lần xuất hiện của '-mno-fuses-madd' và sau đó các bản dựng hoạt động trong virtualenv đó.

Không cần root!


0

Đối với tôi, các cờ xấu được đưa ra rõ ràng trong Makefile của gói. Vì vậy, tôi đã phải chỉnh sửa tệp thực hiện để xóa cờ không được nhận dạng khỏi gói lỗi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.