Problemas com pip install numpy - RuntimeError: Conjunto de ferramentas quebrado: não é possível vincular um programa C simples

93

Estou tentando instalar o numpy (e scipy e matplotlib) em um virturalenv.

Eu continuo recebendo estes erros:

RuntimeError: Broken toolchain: cannot link a simple C program

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

Eu tenho as ferramentas de linha de comando para o xcode instaladas

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

Estou no Mac OSX 10.9 usando um brew instalado python

Editar
Sim, tentando instalar com pip.
Todo o traceback é enorme (> 400 linhas)

Aqui está uma seção dele:

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
Ben
fonte
1
mostre várias das linhas acima da RuntimeErrorlinha, para que possamos ver quais comandos estão falhando. Além disso, você está instalando via pipou criando a fonte diretamente?
MattDMo
Rodger que, editado agora
Ben
Lol @ "não consigo ligar um programa C simples". Que atrevimento!
Cameron Hudson

Respostas:

77

Embora seja feio, parece funcionar

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

Observe que se você estiver obtendo este erro para um pacote diferente de numpy, (como lxml) especifique esse nome de pacote em vez de numpyno final do commnd.

Eu vi um problema semelhante que alguém estava tendo ao instalar uma joia

A instalação Json do Ruby Gem falha no Mavericks e no Xcode 5.1 - argumento desconhecido: '-multiply_definedsuppress'

Esta é apenas uma correção temporária, em algum momento as opções do compilador terão que ser corrigidas

Derrick Shoemake
fonte
1
@Ben: FWIW, eu tenho o mesmo problema (não usar cerveja). Ele apareceu após a atualização do Xcode para 5.1. Por mais feia que seja, essa parece ser a resposta (por enquanto).
orome
2
Há uma explicação nas notas de lançamento do XCode 5.1 .
badzil de
unused-command-line-argument-hard-error-in-futureAinda é necessário com o Xcode mais recente no Yosemite? As coisas parecem funcionar (pelo menos para os pacotes que cansei) sem ele.
orome
82

Para Docker (Alpine) e Python 3.x, isso funcionou para mim:

RUN apk update
RUN apk add make automake gcc g++ subversion python3-dev
Willem Bressers
fonte
13
Para quem usa docker python3 alpine image, esta é a solução.
xssChauhan
3
Eu precisava apk updateprimeiro, caso contrário, receberia uma ERROR: unsatisfiable constraintsmensagem.
yair
Muito obrigado!
Amorfo de
Essa também é a solução para a imagem docker python2 alpine.
Eduard
3
Consegui fazer isso em alpine com apenas gcc g++ make python3-devpara numpy / nmslib. A causa deste problema particular parece ser o compilador c ++ ausenteg++ (parece pelo erro que gcce makejá estão instalados). As outras partes importantes da numpyconstrução são os cabeçalhos python3 que vêm com python3-dev.
ThisGuyCantEven
15

O problema é que você não consegue compilar.

Em primeiro lugar, certifique-se de que aceitou os novos Termos e Condições do Xcode. Para fazer isso, basta abrir o xCode e aceitar.

Então, tente instalar o gcc com

brew install gcc

Finalmente, tente instalar o Numpy com

pip install numpy

Espero que isto ajude.

Desmond
fonte
isso funcionou para mim. O problema é que não abri o xcode e aceitei os termos e condições.
Stephens,
9

Se você não quiser usar sudo (portanto, as permissões e coisas assim são preservadas ao usar o venv), você pode adicionar a declaração ARCHFLAGS ao seu .bash_profile e executar normalmente. Isso funcionou para mim com Mavericks e Xcode 5.1 usando com venv:

Em ~ / .bash_profile:

export ARCHFLAGS = -Wno-error = unused-command-line-argument-hard-error-in-future

Em seguida, basta executar o comando:

pip install - upgrade numpy

Brian
fonte
4
o sudoacima é para instalação em todo o sistema, pode ser executado em um virtualenv
Eren Güven
5

Eu simplesmente tive que abrir o XCode e aceitar o acordo e deixá-lo instalar as ferramentas. Em seguida, voltei para o PyCharm e instalei o numpy novamente sem problemas.

user3589327
fonte
5

Se você estiver executando uma distribuição Linux, você pode precisar de um compilador C, especialmente se você vir linhas de log reveladoras como sh: gcc: command not found. Você pode seguir as instruções aqui , que resumi abaixo:

  • Fedora, Red Hat, CentOS ou Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian ou Ubuntu Linux

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

Depois, você pode tentar executar novamente:

sudo pip install numpy
avyk37
fonte
4

Para usuários do fedora que estão tendo um problema semelhante, tente instalar estes pacotes:

(se não estiver usando python3, use python-devel e pip em vez de 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

Então tente

sudo pip3 install numpy
Ollegn
fonte
2

Em alguns casos, após o OS X atualizar o XCode, o XCode exigirá que o usuário (com privilégios administrativos) aceite uma nova licença. Até que a licença seja aceita, o clang e o gcc emitirão um erro ao tentar compilar e vincular o código. Ou pelo menos pacotes python.

Se você iniciar o XCode e aceitar a licença, os erros não aparecerão mais.

Pelo menos, esse foi o meu caso.

lukecampbell
fonte
1

Isso significa que ele não consegue encontrar seu compilador C. Tente instalar o compilador gcc se a vinculação de outro compilador falhar.

Inc33
fonte
0

O acima funcionou para mim somente após instalar o python3-dev.

Iliyan Bobev
fonte
0

No Fedora 22, isso foi resolvido com a atualização do próprio pip: sudo pip install --upgrade pip

Zenperttu
fonte