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
python
numpy
virtualenv
pip
Ben
źródło
źródło
RuntimeError
linii, abyśmy mogli zobaczyć, które polecenia nie działają. Ponadto, czy instalujesz przezpip
czy bezpośrednio budujesz źródło?Odpowiedzi:
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
numpy
na 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
źródło
unused-command-line-argument-hard-error-in-future
nadal 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).W przypadku Docker (Alpine) i Python 3.x to zadziałało:
źródło
apk update
pierwszego, w przeciwnym razie dostałemERROR: unsatisfiable constraints
wiadomość.gcc g++ make python3-dev
z numpy / nmslib. Przyczyną tego konkretnego problemu wydaje się być brakujący kompilator C ++g++
(wygląda na to błądgcc
imake
są już zainstalowane). Innymi ważnymi częściaminumpy
kompilacji są nagłówki python3, które są dołączonepython3-dev
.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
Na koniec spróbuj zainstalować Numpy z
Mam nadzieję że to pomoże.
źródło
sudo xcode-select --switch /Library/Developer/CommandLineTools
(3)brew install gcc
(4)pip install numpy
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:
Następnie po prostu uruchom polecenie:
źródło
sudo
powyżej jest do instalacji całego systemu, może pracować bez w virtualenvPo 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.
źródło
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ć:
źródło
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)
więc spróbuj
źródło
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.
źródło
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ę.
źródło
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! :-)
źródło
Powyższe działało u mnie dopiero po zainstalowaniu python3-dev.
źródło
W Fedorze 22 problem został rozwiązany przez aktualizację samego pip:
sudo pip install --upgrade pip
źródło