ปัญหาเกี่ยวกับการติดตั้ง pip numpy - RuntimeError: Broken toolchain: ไม่สามารถเชื่อมโยงโปรแกรม C แบบธรรมดาได้


98

ฉันกำลังพยายามติดตั้ง numpy (และ scipy และ matplotlib) ลงใน Virturalenv

ฉันได้รับข้อผิดพลาดเหล่านี้เรื่อย ๆ แม้ว่า:

RuntimeError: Broken toolchain: cannot link a simple C program

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

ฉันติดตั้งเครื่องมือบรรทัดคำสั่งสำหรับ xcode แล้ว

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

ฉันใช้ Mac OSX 10.9 โดยใช้ python ที่ติดตั้ง brew

แก้ไข
ใช่พยายามติดตั้งด้วย pip
การย้อนกลับทั้งหมดมีขนาดใหญ่มาก (> 400 บรรทัด)

นี่คือส่วนหนึ่งของมัน:

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
โปรดแสดงหลายบรรทัดเหนือRuntimeErrorบรรทัดเพื่อให้เราเห็นว่าคำสั่งใดที่ล้มเหลว นอกจากนี้คุณกำลังติดตั้งผ่านpipหรือสร้างแหล่งที่มาโดยตรงหรือไม่?
MattDMo

Rodger ที่แก้ไขตอนนี้
Ben

Lol @ "ไม่สามารถเชื่อมโยงโปรแกรม C ธรรมดาได้" แซบ!
Cameron Hudson

คำตอบ:


77

แม้ว่ามันจะน่าเกลียด แต่ก็ดูเหมือนจะใช้งานได้

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

โปรดทราบว่าหากคุณได้รับข้อผิดพลาดนี้สำหรับแพ็กเกจอื่นที่ไม่ใช่ numpy (เช่น lxml) ให้ระบุชื่อแพ็กเกจนั้นแทนที่จะnumpyอยู่ที่ส่วนท้ายของ commnd

ฉันเห็นปัญหาคล้าย ๆ กันว่ามีใครบางคนกำลังประสบกับการติดตั้งอัญมณี

การติดตั้ง Ruby Gem Json ล้มเหลวบน Mavericks และ Xcode 5.1 - อาร์กิวเมนต์ที่ไม่รู้จัก: '-multiply_definedsuppress'

นี่เป็นเพียงการแก้ไขชั่วคราวในบางจุดตัวเลือกคอมไพเลอร์จะต้องได้รับการแก้ไข


1
@ เบ็น: FWIW ฉันมีปัญหาเดียวกัน (ไม่ได้ใช้ชง) ปรากฏขึ้นหลังจากอัปเดต Xcode เป็น 5.1 อย่างไรก็ตามสิ่งนี้ดูเหมือนจะเป็นคำตอบ (สำหรับตอนนี้)
orome

2
มีคำอธิบายในเป็นXCode 5.1 บันทึกประจำรุ่น
badzil

คือunused-command-line-argument-hard-error-in-futureยังคงจำเป็นกับ Xcode ล่าสุดภายใต้โยเซมิตี? สิ่งต่างๆดูเหมือนจะใช้งานได้ (อย่างน้อยสำหรับแพ็คเกจที่ฉันเหนื่อย) ถ้าไม่มีมัน
orome

ใครมีวิธีแก้ windows
Zack Plauché

90

สำหรับ Docker (Alpine) และ Python 3.x สิ่งนี้ใช้ได้กับฉัน:

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

15
สำหรับใครก็ตามที่ใช้ docker python3 alpine image นี่คือวิธีแก้ปัญหา
xssChauhan

4
ฉันต้องการคนapk updateแรกมิฉะนั้นฉันจะได้รับERROR: unsatisfiable constraintsข้อความ
yair

ขอบคุณมาก!
Amorphous

นี่เป็นวิธีแก้ปัญหาสำหรับภาพนักเทียบท่า python2 อัลไพน์
Eduard

4
ฉันสามารถทำสิ่งนี้บนเทือกเขาแอลป์ได้โดยใช้gcc g++ make python3-devสำหรับ numpy / nmslib เท่านั้น สาเหตุของปัญหานี้โดยเฉพาะอย่างยิ่งดูเหมือนว่าจะหายไป C ++ คอมไพเลอร์g++(มันดูจากข้อผิดพลาดที่gccและmakeมีการติดตั้งแล้ว) ส่วนที่สำคัญอื่น ๆ ของการnumpyสร้างเป็นส่วนหัว python3 python3-devที่มาพร้อมกับ
ThisGuyCantEven

16

ปัญหาคือคุณไม่สามารถรวบรวม

ขั้นแรกตรวจสอบให้แน่ใจว่าคุณได้ยอมรับข้อกำหนดและเงื่อนไขใหม่กับ Xcode แล้ว ในการดำเนินการนี้เพียงแค่เปิด xCode และยอมรับ

จากนั้นลองติดตั้ง gcc ด้วย

brew install gcc

สุดท้ายลองติดตั้ง Numpy ด้วย

pip install numpy

หวังว่านี่จะช่วยได้


สิ่งนี้ได้ผลสำหรับฉัน ปัญหาคือฉันไม่ได้เปิด xcode และยอมรับข้อกำหนดและเงื่อนไข
Stephens

สำหรับผู้ที่ใช้งานBig Sur Beta : (1) ดาวน์โหลดและติดตั้งCommand Line Tools สำหรับ Xcode 12.2 beta 3 (2) ในประเภท Terminal sudo xcode-select --switch /Library/Developer/CommandLineTools(3) brew install gcc(4)pip install numpy
Felipe

9

หากคุณไม่ต้องการใช้ sudo (ดังนั้นสิทธิ์และสิ่งต่างๆเช่นนี้จะถูกเก็บรักษาไว้เมื่อใช้ venv) คุณสามารถเพิ่มการประกาศ ARCHFLAGS ใน. bash_profile ของคุณและเรียกใช้ตามปกติ สิ่งนี้ใช้ได้กับฉันกับ Mavericks และ Xcode 5.1 โดยใช้กับ venv:

ใน ~ / .bash_profile:

ส่งออก ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future

จากนั้นเพียงเรียกใช้คำสั่ง:

การติดตั้ง pip - อัปเกรดจำนวน


4
sudoข้างต้นเป็นสำหรับการติดตั้งทั้งระบบสามารถทำงานได้โดยไม่ใน virtualenv
Eren Güven

5

ฉันต้องเปิด XCode และยอมรับข้อตกลงและปล่อยให้ติดตั้งเครื่องมือ จากนั้นฉันก็กลับไปที่ PyCharm และติดตั้ง numpy อีกครั้งโดยไม่มีปัญหา


5

ถ้าคุณใช้การกระจาย Linux คุณอาจต้องคอมไพเลอร์ C sh: gcc: command not foundโดยเฉพาะอย่างยิ่งถ้าคุณเห็นเส้นล็อกปากโป้งเช่น คุณสามารถทำตามคำแนะนำได้ที่นี่ซึ่งฉันได้สรุปไว้ด้านล่าง:

  • Fedora, Red Hat, CentOS หรือ Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian หรือ Ubuntu Linux

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

จากนั้นคุณสามารถลองรันใหม่:

sudo pip install numpy

4

สำหรับผู้ใช้ fedora ที่มีปัญหาคล้ายกันนี้ให้ลองติดตั้ง packeges เหล่านี้:

(ถ้าไม่ใช้ python3 ให้ใช้ python-devel และ pip ​​แทน 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

แล้วลอง

sudo pip3 install numpy

2

ในบางกรณีหลังจาก OS X อัปเกรด XCode แล้ว XCode จะกำหนดให้ผู้ใช้ (ที่มีสิทธิ์ระดับผู้ดูแลระบบ) ยอมรับใบอนุญาตใหม่ จนกว่าจะยอมรับใบอนุญาต clang และ gcc จะแสดงข้อผิดพลาดเมื่อพยายามรวบรวมและเชื่อมโยงโค้ด หรืออย่างน้อยแพ็คเกจ python

หากคุณเปิด XCode และยอมรับใบอนุญาตข้อผิดพลาดจะไม่ปรากฏอีกต่อไป

อย่างน้อยนี่ก็เป็นกรณีสำหรับฉัน


1

ซึ่งหมายความว่าไม่พบคอมไพเลอร์ C ของคุณ ลองติดตั้งคอมไพเลอร์ gcc หากการเชื่อมโยงคอมไพเลอร์อื่นล้มเหลว


1

ในกรณีของฉันสิ่งนี้เกิดขึ้นระหว่างการสร้างนักเทียบท่า ปัญหาคือรูปภาพพื้นฐานไม่ได้รับการแก้ไขเป็นเวอร์ชัน python ที่เฉพาะเจาะจงและ numpy ไม่สามารถคอมไพล์ด้วยภาพใหม่ได้

FROM python:3-slim  # BAD

หลังจากที่ฉันเปลี่ยนเป็นสิ่งต่อไปนี้มันใช้งานได้:

FROM python:3.8-slim  # GOOD

อย่าลืมแก้ไขเวอร์ชันของคุณ! :-)


วันนี้ผมเกรียนเหมือนกัน ดูเหมือนว่าพวกเขาลบ c compiler + ที่เกี่ยวข้อง make utilities ใน 3.9.0
PF1


0

ใน Fedora 22 สิ่งนี้ได้รับการแก้ไขโดยการอัปเดต pip เอง: sudo pip install --upgrade pip

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.