MPICC-Fehler bei der Installation von mpi4py trotz korrekter und funktionierender MPICC-Installation

StackOverflow https://stackoverflow.com//questions/21048329

  •  21-12-2019
  •  | 
  •  

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.
War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top