Pregunta

He instalado con éxito MPICH en Ubuntu 12.04 y se puede obtener con la simple prueba de que los programas en C para compilar y ejecutar como se esperaba.

Ahora estoy tratando de usar pip para instalar mpi4py, simplemente a través de pip install mpi4py.Yo ejecuta en primer lugar sudo apt-get build-dep python-mpi4py que funcionaba bien.

Estoy trabajando con virtualenv, por lo que este mpi4py instalación no es con sudo (y no debe).

Aquí está el comando y el error que me golpeó después de una larga serie de salida de la consola que se ve como normal compilar cosas (yo puede imprimir todos de la salida de la consola si es necesario, pero creo que la mayoría de que es el estándar de las advertencias del compilador que indican que no hay problemas).

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

Pero, which mpicc da el resultado esperado: /usr/bin/mpicc y como se mencionó anteriormente, si yo uso este mpicc para compilar simple .c programas de prueba, ellos trabajan muy bien.

He visto algunos enlaces que describen una bandera opción fPIC para la compilación de MPI, pero, yo simplemente utilizar apt-get para instalar MPI y específicamente desea sólo dependen de los nativos de paquetes de Ubuntu para estas herramientas, como contraposición a mantener separadas las instrucciones de instalación para crear manualmente ellos.

¿Cómo puedo determinar por qué mpicc está fallando dentro de la mpi4py proceso de instalación?

Agregó

El siguiente de la salida de la consola parece ser el comando de compilación, que provoca el problema.

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

Esto da el siguiente error cuando intento desde la línea de comandos a mí mismo:

(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.
¿Fue útil?

Solución

Yo era capaz de trabajar con éxito en torno a este, sin cambios para nada en mi sistema, simplemente apuntando pip en el MPI4PY url del paquete, en lugar del nombre del paquete:

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

Otros consejos

Un problema similar se encontró en Ubuntu 18.04 con openmpi-4.0.0.Resuelto mediante la instalación de una versión más antigua de openmpi-2.1.6.

apt-get install openmpi=2.1.6
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top