Проблеми з pip install 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

Редагувати
Так, намагаючись встановити за допомогою 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

Роджер, редагується зараз
Бен,

Lol @ "не може зв'язати просту програму на С". Такий сасс!
Кемерон Хадсон,

Відповіді:


77

Хоча це і потворно, але, здається, працює

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

Зверніть увагу, що якщо ви отримуєте цю помилку для пакета, відмінного від numpy, (наприклад, lxml), вкажіть це ім'я пакета, а numpyне в кінці коміду.

Я бачив подібну проблему, яка виникала у когось із встановленням дорогоцінного каменя

Не вдається встановити Ruby Gem Json на Mavericks та Xcode 5.1 - невідомий аргумент: '-multiply_definedsuppress'

Це лише тимчасове виправлення, в якийсь момент параметри компілятора доведеться виправити


1
@Ben: FWIW, у мене така сама проблема (не використовую brew). Він з’явився після оновлення Xcode до 5.1. Хоч би потворним, це, здається, є відповіддю (поки що).
orome


Все unused-command-line-argument-hard-error-in-futureще потрібен останній Xcode під Yosemite? Здається, справи працюють (принаймні для пакетів, які я втомився) без цього.
orome

У когось є рішення для Windows?
Зак Плаше

90

Для Docker (Alpine) та Python 3.x це мені вдалося:

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

15
Це рішення для тих, хто використовує альпійське зображення докера python3.
xssChauhan

4
Мені знадобився apk updateперший, інакше я отримав ERROR: unsatisfiable constraintsповідомлення.
yair

Дуже дякую!
Аморфний

Це також рішення для альпійського зображення докера python2.
Едуард

4
Я зміг це зробити на альпійській gcc g++ make python3-devверсії, використовуючи лише для numpy / nmslib. Причина цього конкретного питання , здається, відсутню C ++ компілятора g++(це виглядає помилка , що gccі makeвже встановлено). Іншими важливими частинами numpyзбірки є заголовки python3, які йдуть в комплекті python3-dev.
ThisGuyCantВече

16

Проблема в тому, що ви не можете скомпілювати.

По-перше, переконайтеся, що ви прийняли нові Загальні положення та умови з Xcode. Для цього просто відкрийте xCode і прийміть.

Потім спробуйте встановити gcc за допомогою

brew install gcc

Нарешті, спробуйте встановити Numpy за допомогою

pip install numpy

Сподіваюся, це допомагає.


це спрацювало для мене. Проблема полягала в тому, що я не відкрив xcode і не прийняв умови використання.
Стефенс,

Для тих, хто використовує Big Sur Beta : (1) завантажте та встановіть Інструменти командного рядка для Xcode 12.2 beta 3 (2) на терміналі типу sudo xcode-select --switch /Library/Developer/CommandLineTools(3) brew install gcc(4)pip install numpy
Феліпе,

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 install --upgrade numpy


4
sudoвище для установки загальносистемної, може працювати без в virtualenv
Ерен 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, які мають подібну проблему, спробуйте встановити такі пакети:

(якщо не використовується 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-компілятора +, пов'язані з make, у версії 3.9.0.
PF1


0

У Fedora 22 це було вирішено шляхом оновлення самого pip: sudo pip install --upgrade pip

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.