Проблемы с pip install numpy - RuntimeError: сломанная инструментальная цепочка: невозможно связать простую программу 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, использую установленный питон

Изменить
Да, пытаюсь установить с помощью 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 @ "не может связать простую программу на C". Такая дерзость!
Кэмерон Хадсон,

Ответы:

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, у меня такая же проблема (не с пивом). Он появился после обновления Xcode до 5.1. Каким бы уродливым он ни был, это, кажется, ответ (на данный момент).
orome
2
Есть объяснение в примечаниях к выпуску XCode 5.1 .
badzil
Все 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
Это решение для всех, кто использует образ docker python3 alpine.
xssChauhan
4
Мне нужен был apk updateпервый, иначе я получил бы ERROR: unsatisfiable constraintsсообщение.
yair
Спасибо огромное!
Amorphous
Это также решение для образа docker python2 alpine.
Эдуард
4
Я смог сделать это на alpine только gcc g++ make python3-devдля numpy / nmslib. Причина этого конкретного вопроса , кажется, недостающее C ++ компилятора g++(это выглядит ошибка , что gccи makeуже установлено). Другой важной частью numpyсборки являются заголовки python3, которые поставляются с python3-dev.
ThisGuyCantEven 02
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 = неиспользуемый-аргумент-командной-строки-жесткая-ошибка-в будущем

Затем просто запустите команду:

pip install --upgrade numpy

Брайан
источник
4
sudoвыше для установки общесистемной, может работать без в virtualenv
Эрен Güven
5

Мне просто нужно было открыть XCode, принять соглашение и позволить ему установить инструменты. Затем я вернулся к PyCharm и снова без проблем установил numpy.

user3589327
источник
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
avyk37
источник
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
Ollegn
источник
2

В некоторых случаях после того, как OS X обновит XCode, XCode потребует от пользователя (с правами администратора) принять новую лицензию. Пока лицензия не будет принята, clang и gcc выдадут ошибку при попытке скомпилировать и связать код. Или, по крайней мере, пакеты python.

Если вы запустите XCode и примете лицензию, ошибки больше не появятся.

По крайней мере, так было со мной.

Lukecampbell
источник
1

Это означает, что он не может найти ваш компилятор C. Попробуйте установить компилятор gcc, если компоновка другого компилятора не удалась.

Inc33
источник
1

В моем случае это произошло во время сборки докера. Проблема заключалась в том, что базовое изображение не было привязано к определенной версии Python, и numpy не мог скомпилировать с новым.

FROM python:3-slim  # BAD

После того, как я изменил его на следующее, все заработало:

FROM python:3.8-slim  # GOOD

Не забудьте исправить свои версии! :-)

Больше
источник
То же самое случилось и со мной сегодня. Похоже, они удалили компилятор c + связанные утилиты make в 3.9.0.
PF1,
0

Вышеупомянутое сработало для меня только после установки python3-dev.

Илиян Бобев
источник
0

В Fedora 22 это было решено обновлением самого pip: sudo pip install --upgrade pip

Zenperttu
источник