MPICC error al instalar mpi4py a pesar de corregir y de trabajo MPICC instalación
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.
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