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
Ben
źródło
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

Derrick Shoemake
źródło
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
Willem Bressers
źródło
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.

Desmond
źródło
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

Brian
źródło
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.

user3589327
źródło
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
avyk37
źródło
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
Ollegn
źródło
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.

lukecampbell
źródło
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ę.

Inc33
źródło
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! :-)

Jeszcze
źródło
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

Powyższe działało u mnie dopiero po zainstalowaniu python3-dev.

Iliyan Bobev
źródło
0

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

zenperttu
źródło