Problemy z instalacją pip numpy - RuntimeError: Uszkodzony łańcuch narzędzi: nie można połączyć prostego programu w C.


98

Próbuję zainstalować numpy (oraz scipy i matplotlib) w virturalenv.

Ciągle otrzymuję te błędy:

RuntimeError: Broken toolchain: cannot link a simple C program

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

Mam zainstalowane narzędzia wiersza poleceń dla xcode

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

Jestem na Mac OSX 10.9 Używam Pythona zainstalowanego brew

Edytuj
Tak, próbuję zainstalować za pomocą pip.
Cały ślad jest ogromny (> 400 linii)

Oto jego część:

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
proszę pokazać kilka linii powyżej RuntimeErrorlinii, abyśmy mogli zobaczyć, które polecenia nie działają. Ponadto, czy instalujesz przez pipczy bezpośrednio budujesz źródło?
MattDMo

Rodger that, edytowany teraz
Ben

Lol @ „nie może połączyć prostego programu w C”. Taka bezczelna!
Cameron Hudson

Odpowiedzi:


77

Chociaż jest brzydki, wydaje się działać

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

Zauważ, że jeśli otrzymujesz ten błąd dla pakietu innego niż numpy (na przykład lxml), podaj nazwę pakietu zamiast numpyna końcu polecenia.

Widziałem podobny problem z instalacją klejnotu

Instalacja Json w Ruby Gem kończy się niepowodzeniem na Mavericks i Xcode 5.1 - nieznany argument: '-multiply_definedsuppress'

To jest tylko tymczasowa poprawka, w pewnym momencie opcje kompilatora będą musiały zostać naprawione


1
@Ben: FWIW, mam ten sam problem (nie używam naparu). Pojawił się po aktualizacji Xcode do 5.1. Jakkolwiek brzydkie, to wydaje się być odpowiedzią (na razie).
orome

2
Jest wyjaśnienie w informacjach o wydaniu XCode 5.1 .
badzil

Czy unused-command-line-argument-hard-error-in-futurenadal jest potrzebny najnowszy Xcode w ramach Yosemite? Wydaje się, że wszystko działa bez niego (przynajmniej w przypadku pakietów, które są zmęczone).
orome

Czy ktoś ma rozwiązanie dla okien?
Zack Plauché

90

W przypadku Docker (Alpine) i Python 3.x to zadziałało:

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

15
Dla każdego, kto używa obrazu Docker python3 alpine, jest to rozwiązanie.
xssChauhan,

4
Potrzebowałem apk updatepierwszego, w przeciwnym razie dostałem ERROR: unsatisfiable constraintswiadomość.
yair

Dziękuję bardzo!
Amorficzny

Jest to również rozwiązanie dla obrazu Docker python2 alpine.
Eduard

4
Udało mi się to zrobić na alpine tylko gcc g++ make python3-devz numpy / nmslib. Przyczyną tego konkretnego problemu wydaje się być brakujący kompilator C ++ g++(wygląda na to błąd gcci makesą już zainstalowane). Innymi ważnymi częściami numpykompilacji są nagłówki python3, które są dołączone python3-dev.
ThisGuyCantEven

16

Problem w tym, że nie możesz się skompilować.

Najpierw upewnij się, że zaakceptowałeś nowe Warunki korzystania z Xcode. Aby to zrobić, po prostu otwórz xCode i zaakceptuj.

Następnie spróbuj zainstalować gcc z

brew install gcc

Na koniec spróbuj zainstalować Numpy z

pip install numpy

Mam nadzieję że to pomoże.


to działało dla mnie. Problem polegał na tym, że nie otworzyłem xcode i nie zaakceptowałem warunków.
Stephens

Dla osób korzystających z Big Sur Beta : (1) pobierz i zainstaluj Narzędzia wiersza poleceń dla Xcode 12.2 beta 3 (2) na terminalu typu sudo xcode-select --switch /Library/Developer/CommandLineTools(3) brew install gcc(4)pip install numpy
Felipe

9

Jeśli nie chcesz używać sudo (więc uprawnienia i tym podobne są zachowane podczas używania venv), możesz dodać deklarację ARCHFLAGS do swojego .bash_profile i uruchomić normalnie. To zadziałało dla mnie z Mavericks i Xcode 5.1 przy użyciu venv:

W ~ / .bash_profile:

export ARCHFLAGS = -Wno-error = nieużywany-argument-wiersza-poleceń-twardy-błąd-w-przyszłości

Następnie po prostu uruchom polecenie:

pip install --upgrade numpy


4
sudopowyżej jest do instalacji całego systemu, może pracować bez w virtualenv
Eren Güven

5

Po prostu musiałem otworzyć XCode, zaakceptować umowę i pozwolić mu zainstalować narzędzia. Następnie wróciłem do PyCharm i ponownie zainstalowałem numpy bez żadnych problemów.


5

Jeśli używasz dystrybucji Linuksa, możesz potrzebować kompilatora C, zwłaszcza jeśli widzisz charakterystyczne wiersze dziennika, takie jak sh: gcc: command not found. Możesz postępować zgodnie z instrukcjami tutaj , które podsumowałem poniżej:

  • Fedora, Red Hat, CentOS lub Scientific Linux

    # yum groupinstall 'Development Tools'

  • Debian lub Ubuntu Linux

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

Następnie możesz spróbować ponownie uruchomić:

sudo pip install numpy

4

Dla użytkowników fedory, którzy mają podobny problem, spróbuj zainstalować te pakiety:

(jeśli nie używasz python3, użyj python-devel i pip zamiast 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

więc spróbuj

sudo pip3 install numpy

2

W niektórych przypadkach po uaktualnieniu OS X XCode, XCode będzie wymagać od użytkownika (z uprawnieniami administratora) zaakceptowania nowej licencji. Dopóki licencja nie zostanie zaakceptowana, clang i gcc będą generować błąd podczas próby kompilacji i linkowania kodu. Albo przynajmniej pakiety Pythona.

Jeśli uruchomisz XCode i zaakceptujesz licencję, błędy przestaną się pojawiać.

Przynajmniej tak było w przypadku mnie.


1

Oznacza to, że nie może znaleźć Twojego kompilatora C. Spróbuj zainstalować kompilator gcc, jeśli połączenie z innym kompilatorem nie powiedzie się.


1

W moim przypadku stało się to podczas kompilacji dockera. Problem polegał na tym, że obraz podstawowy nie został naprawiony do konkretnej wersji Pythona i numpy nie mógł się skompilować z nową.

FROM python:3-slim  # BAD

Po zmianie na następującą zadziałało:

FROM python:3.8-slim  # GOOD

Pamiętaj, aby naprawić swoje wersje! :-)


To samo przytrafiło mi się dzisiaj. Wygląda na to, że usunęli kompilator c + powiązane narzędzia make w 3.9.0.
PF1


0

W Fedorze 22 problem został rozwiązany przez aktualizację samego pip: sudo pip install --upgrade pip

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.