Erreur MPICC lors de l'installation de mpi4py malgré une installation MPICC correcte et fonctionnelle

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

  •  21-12-2019
  •  | 
  •  

Question

J'ai installé avec succès MPICH sur Ubuntu 12.04 et je peux compiler et exécuter les programmes de test C simples comme prévu.

Maintenant, j'essaie d'utiliser pip pour installer mpi4py, simplement via pip install mpi4py.J'ai d'abord exécuté sudo apt-get build-dep python-mpi4py qui a bien fonctionné.

Je travaille avec virtualenv, donc cette installation mpi4py n'est pas avec sudo (et ne devrait pas l'être).

Voici la commande et l'erreur que j'ai rencontrée après une longue série de sorties de console qui ressemblent à des éléments de compilation normaux (je peux imprimer tous de la sortie de la console si nécessaire, mais je pense que la plupart sont des avertissements standard du compilateur qui n'indiquent aucun problème).

(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)

Mais, which mpicc donne le résultat attendu : /usr/bin/mpicc et comme mentionné ci-dessus, si j'utilise ceci mpicc pour compiler des programmes de test .c simples, ils fonctionnent bien.

J'ai vu des liens décrivant une option de drapeau fPIC pour compiler MPI, mais j'ai simplement utilisé apt-get pour installer MPI et je souhaite spécifiquement m'appuyer uniquement sur les packages Ubuntu natifs pour ces outils, au lieu de conserver des instructions d'installation distinctes pour les construire manuellement.

Comment puis-je déterminer pourquoi mpicc échoue dans le mpi4py processus d'installation?

Ajoutée

Ce qui suit dans la sortie de la console semble être la commande de compilation à l'origine du problème.

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

Cela donne l'erreur suivante lorsque j'essaie moi-même depuis la ligne de commande :

(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.
Était-ce utile?

La solution

J'ai réussi à contourner ce problème sans aucune modification dans mon système en pointant simplement pip sur l'URL du package MPI4PY, plutôt que sur le nom du package :

pip install https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-1.3.1.tar.gz

Autres conseils

Un problème similaire a été rencontré sur Ubuntu 18.04 avec openmpi-4.0.0.Résolu en installant l'ancienne version d'openmpi-2.1.6.

apt-get install openmpi=2.1.6
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top