MPICC-Fehler bei der Installation von mpi4py trotz korrekter und funktionierender MPICC-Installation
Frage
Ich habe MPICH erfolgreich auf Ubuntu 12.04 installiert und kann die einfachen Test-C-Programme wie erwartet kompilieren und ausführen.
Jetzt versuche ich, pip zu verwenden, um mpi4py zu installieren, einfach über pip install mpi4py
.Ich habe zuerst ausgeführt sudo apt-get build-dep python-mpi4py
was gut funktioniert hat.
Ich arbeite mit virtualenv, daher erfolgt diese mpi4py-Installation nicht mit sudo (und sollte es auch nicht sein).
Hier ist der Befehl und der Fehler, den ich nach einer langen Reihe von Konsolenausgaben erhalten habe, die wie normale Kompilierungsausgaben aussehen (ich kann drucken). alle der Konsolenausgabe, wenn nötig, aber ich denke, das meiste davon sind Standard-Compiler-Warnungen, die auf keine Probleme hinweisen).
(local-dev)espears@espears-w:~$ pip install mpi4py
src/ext/mpi_swig.c: In function ‘SWIG_Python_AddErrorMsg’:
src/ext/mpi_swig.c:859:5: error: format not a string literal and no format arguments [-Werror=format-security]
cc1: some warnings being treated as errors
error: command '/usr/bin/mpicc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /home/espears/.virtualenvs/local-dev/bin/python -c "import setuptools, tokenize;__file__='/home/espears/.virtualenvs/local-dev/build/mpi4py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-5o6OwN-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/espears/.virtualenvs/local-dev/include/site/python2.7 failed with error code 1 in /home/espears/.virtualenvs/local-dev/build/mpi4py
Traceback (most recent call last):
File "/home/espears/.virtualenvs/local-dev/bin/pip", line 11, in <module>
sys.exit(main())
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/__init__.py", line 185, in main
return command.main(cmd_args)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 31: ordinal not in range(128)
Aber, which mpicc
liefert das erwartete Ergebnis: /usr/bin/mpicc
und wie oben erwähnt, wenn ich das verwende mpicc
Zum Kompilieren einfacher .c-Testprogramme funktionieren sie einwandfrei.
Ich habe einige Links gesehen, die eine Flag-Option beschreiben fPIC
zum Kompilieren von MPI, aber ich habe lediglich apt-get zum Installieren von MPI verwendet und möchte mich speziell für diese Tools nur auf native Ubuntu-Pakete verlassen, anstatt separate Installationsanweisungen für deren manuelle Erstellung zu verwalten.
Wie kann ich herausfinden, warum mpicc
scheitert innerhalb der mpi4py
Installationsprozess?
Hinzugefügt
Das Folgende aus der Konsolenausgabe scheint der Kompilierungsbefehl zu sein, der das Problem verursacht.
building 'mpi4py._mpi_swig' extension
/usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
Dies führt zu folgender Fehlermeldung, wenn ich es selbst über die Befehlszeile versuche:
(local-dev)espears@espears-w:~$ /usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
gcc: error: src/ext/mpi_swig.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
Lösung
Ich konnte dies ohne Änderungen an irgendetwas in meinem System erfolgreich umgehen, indem ich einfach pip auf die MPI4PY-Paket-URL und nicht auf den Paketnamen verwies:
pip install https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-1.3.1.tar.gz
Andere Tipps
Ein ähnliches Problem trat unter Ubuntu 18.04 mit openmpi-4.0.0 auf.Gelöst durch Installation einer älteren Version von openmpi-2.1.6.
apt-get install openmpi=2.1.6