Sự cố với numpy cài đặt pip - RuntimeError: Chuỗi công cụ bị hỏng: không thể liên kết một chương trình C đơn giản


98

Tôi đang cố gắng cài đặt numpy (và scipy và matplotlib) vào một Virturalenv.

Mặc dù vậy, tôi vẫn gặp những lỗi sau:

RuntimeError: Broken toolchain: cannot link a simple C program

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1

Tôi đã cài đặt công cụ dòng lệnh cho xcode

$ which gcc
/usr/bin/gcc
$ which cc
/usr/bin/cc

Tôi đang sử dụng Mac OSX 10.9 Sử dụng python đã cài đặt bia

Chỉnh sửa
Có, đang cố gắng cài đặt bằng pip.
Toàn bộ dấu vết là rất lớn (> 400 dòng)

Đây là một phần của nó:

C compiler: 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



compile options: '-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -Inumpy/core/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c'

cc: _configtest.c

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

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

failure.

removing: _configtest.c _configtest.o

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/setup.py", line 192, in <module>

    setup_package()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/setup.py", line 185, in setup_package

    configuration=configuration )

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/core.py", line 169, in setup

    return old_setup(**new_attr)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup

    dist.run_commands()

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands

    self.run_command(cmd)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/egg_info.py", line 10, in run

    self.run_command("build_src")

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command

    self.distribution.run_command(command)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command

    cmd_obj.run()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 153, in run

    self.build_sources()

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 164, in build_sources

    self.build_library_sources(*libname_info)

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 299, in build_library_sources

    sources = self.generate_sources(sources, (lib_name, build_info))

  File "/Users/bdhammel/Documents/research_programming/julia_env/build/numpy/numpy/distutils/command/build_src.py", line 386, in generate_sources

    source = func(extension, build_dir)

  File "numpy/core/setup.py", line 674, in get_mathlib_info

    raise RuntimeError("Broken toolchain: cannot link a simple C program")

RuntimeError: Broken toolchain: cannot link a simple C program

1
vui lòng hiển thị một số dòng bên trên RuntimeErrordòng, để chúng tôi có thể biết lệnh nào không thành công. Ngoài ra, bạn đang cài đặt thông qua piphoặc bằng cách xây dựng nguồn trực tiếp?
MattDMo

Rodger đó, đã chỉnh sửa ngay bây giờ
Ben

Lol @ "không thể liên kết một chương trình C đơn giản". Thật hỗn xược!
Cameron Hudson

Câu trả lời:


77

Trong khi nó xấu xí, nó có vẻ hoạt động

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install --upgrade numpy

Lưu ý rằng nếu bạn gặp lỗi này đối với một gói không phải là numpy, (chẳng hạn như lxml), hãy chỉ định tên gói đó thay vì numpyở cuối dấu phẩy.

Tôi đã gặp sự cố tương tự mà ai đó đang gặp phải khi cài đặt một viên ngọc

Ruby Gem cài đặt Json không thành công trên Mavericks và Xcode 5.1 - đối số không xác định: '-multiply_definedsuppress'

Đây chỉ là cách khắc phục tạm thời, tại một số thời điểm các tùy chọn trình biên dịch sẽ phải được sửa


1
@Ben: FWIW, tôi cũng gặp vấn đề tương tự (không sử dụng bia). Nó xuất hiện sau khi cập nhật Xcode lên 5.1. Tuy nhiên, điều này có vẻ là câu trả lời (cho đến bây giờ).
orome

2
Có giải thích trong ghi chú phát hành XCode 5.1 .
badzil

Bạn unused-command-line-argument-hard-error-in-futurevẫn cần sử dụng Xcode mới nhất theo Yosemite? Mọi thứ dường như hoạt động (ít nhất là đối với các gói mà tôi đã mệt mỏi) mà không có nó.
orome

Bất cứ ai có một giải pháp cửa sổ?
Zack Plauché

90

Đối với Docker (Alpine) và Python 3.x, điều này phù hợp với tôi:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev

15
Đối với bất kỳ ai sử dụng hình ảnh núi cao của docker python3, đây là giải pháp.
xssChauhan

4
Tôi cần một cái apk updateđầu tiên, nếu không thì tôi nhận được một ERROR: unsatisfiable constraintstin nhắn.
yair

Cảm ơn bạn rất nhiều!
Vô định hình

Đây cũng là giải pháp cho hình ảnh núi cao của docker python2.
Eduard

4
Tôi đã có thể làm điều này trên alpine chỉ gcc g++ make python3-devvới numpy / nmslib. Nguyên nhân của vấn đề cụ thể này dường như là trình biên dịch c ++ bị thiếu g++(có vẻ như lỗi gccmakeđã được cài đặt). Các phần quan trọng khác của bản numpydựng là tiêu đề python3 đi kèm python3-dev.
ThisGuyCantEven

16

Vấn đề là bạn không thể biên dịch.

Trước tiên, hãy đảm bảo rằng bạn đã chấp nhận các Điều khoản và Điều kiện mới với Xcode. Để làm điều này, chỉ cần mở xCode và chấp nhận.

Sau đó, hãy thử cài đặt gcc với

brew install gcc

Cuối cùng, hãy thử cài đặt Numpy với

pip install numpy

Hi vọng điêu nay co ich.


điều này đã làm việc cho tôi. Vấn đề là tôi đã không mở xcode và chấp nhận các điều khoản và điều kiện.
Stephens

Đối với những người đang chạy Big Sur Beta : (1) tải xuống và cài đặt Công cụ dòng lệnh cho Xcode 12.2 beta 3 (2) trên loại thiết bị đầu cuối sudo xcode-select --switch /Library/Developer/CommandLineTools(3) brew install gcc(4)pip install numpy
Felipe

9

Nếu bạn không muốn sử dụng sudo (vì vậy các quyền và những thứ tương tự được giữ nguyên khi sử dụng venv), bạn có thể thêm khai báo ARCHFLAGS vào .bash_profile của mình và chạy như bình thường. Điều này làm việc cho tôi với Mavericks và Xcode 5.1 bằng cách sử dụng venv:

Trong ~ / .bash_profile:

export ARCHFLAGS = -Wno-error = used-command-line-đối số-hard-error-in-future

Sau đó, chỉ cần chạy lệnh:

cài đặt pip - nâng cấp numpy


4
các sudotrên là để cài đặt toàn hệ thống, có thể chạy mà không có trong một virtualenv
Eren Güven

5

Tôi chỉ cần mở XCode và chấp nhận thỏa thuận và để nó cài đặt các công cụ. Sau đó, tôi quay lại PyCharm và cài đặt lại numpy mà không gặp vấn đề gì.


5

Nếu bạn đang chạy một bản phân phối linux, bạn có thể cần một trình biên dịch C, đặc biệt nếu bạn thấy các dòng nhật ký kể chuyện như sh: gcc: command not found. Bạn có thể làm theo hướng dẫn tại đây mà tôi đã tóm tắt bên dưới:

  • Fedora, Red Hat, CentOS hoặc Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian hoặc Ubuntu Linux

    $ sudo apt-get update $ sudo apt-get install build-essential manpages-dev

Sau đó, bạn có thể thử chạy lại:

sudo pip install numpy

4

Đối với người dùng fedora đang gặp sự cố tương tự, hãy thử cài đặt các nhịp độ sau:

(nếu không sử dụng python3, hãy sử dụng python-devel và pip thay vì pip3)

sudo dnf install python3-devel
sudo dnf install make automake gcc gcc-c++ gcc-gfortran
sudo dnf install redhat-rpm-config
sudo dnf install subversion

vậy hãy thử đi

sudo pip3 install numpy

2

Trong một số trường hợp sau khi OS X nâng cấp XCode, XCode sẽ yêu cầu người dùng (có đặc quyền quản trị) chấp nhận một giấy phép mới. Cho đến khi giấy phép được chấp nhận, clang và gcc sẽ thông báo lỗi khi cố gắng biên dịch và liên kết mã. Hoặc ít nhất là các gói python.

Nếu bạn khởi chạy XCode và chấp nhận giấy phép, các lỗi sẽ không còn xuất hiện nữa.

Ít nhất, đây là trường hợp của tôi.


1

Điều này có nghĩa là nó không thể tìm thấy trình biên dịch C của bạn. Thử cài đặt trình biên dịch gcc nếu liên kết trình biên dịch khác không thành công.


1

Trong trường hợp của tôi, điều này đã xảy ra trong quá trình xây dựng docker. Vấn đề là hình ảnh cơ sở không được sửa thành phiên bản python cụ thể và numpy không thể biên dịch với phiên bản mới.

FROM python:3-slim  # BAD

Sau khi tôi thay đổi nó thành như sau, nó hoạt động:

FROM python:3.8-slim  # GOOD

Hãy nhớ sửa chữa các phiên bản của bạn! :-)


Điều tương tự đã được cắt ra cho tôi ngày hôm nay. Có vẻ như họ đã xóa trình biên dịch c + tiện ích tạo liên quan trong 3.9.0.
PF1


0

Trên Fedora 22, điều này đã được giải quyết bằng cách tự cập nhật pip: sudo pip install --upgrade pip

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.