error fatal: "python.h" sin archivo o directorio?

10

Mientras buscaba una solución para el problema húngaro , encontré este enlace de GitHub .

Revisé el readme.mdarchivo y realicé todo lo descrito allí. Después de copiar hungarian.soen mi directorio de trabajo, cuando intenté compilar hungarian.cppusando make hungarian, obtuve esta salida:

anupam@JAZZ:~/Python/hungarian-master$ make hungarian
g++     hungarian.cpp   -o hungarian
hungarian.cpp:7:20: fatal error: Python.h: No such file or directory
 #include "Python.h"
                    ^
compilation terminated.
make: *** [hungarian] Error 1

Encontré esta pregunta relacionada en Stack Overflow , pero la respuesta no funcionó para mí.

Soy muy nuevo en GitHub. No sé cómo agregar módulos g++. ¿Alguien puede ayudarme con eso y qué hacer a continuación?

Lázaro
fuente
44
¿Entonces correr sudo apt-get install python-devno funcionó?
Salem
sí, @Salem no funcionó para mí ...
Lázaro

Respuestas:

11

Después de mirar https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp , parece que necesitas ambos:

#include "Python.h"
#include "numpy/arrayobject.h"

Así que instale los siguientes paquetes:

sudo apt-get install libpython2.7-dev python-numpy

Para identificar los paquetes que faltan (los que proporcionan los encabezados), mire paquetes.ubuntu.com .

Sylvain Pineau
fuente
, También tenía esto instalado ,,, libpython2.7-dev ya es la versión más nueva.
Lázaro
1
@jazzz: desde que lo instaló python-dev, ahora tiene libpython2.7-devuna dependencia de python-dev. Problema resuelto ¿no?
Sylvain Pineau
1
@jazz Puede verificar las dependencias de los paquetes aquí: packages.ubuntu.com/trusty/python-dev y packages.ubuntu.com/trusty/libpython-dev
Sylvain Pineau
Gracias @Sylvain Pineau ,, bueno, mientras tanto, miré en stackoverflow.com/questions/11041299/… , y en uno de los comentarios recibí. Probablemente Python.h no está en la ruta de inclusión de sus sistemas de compilación. Puede averiguar dónde está su Python.h ejecutando dpkg -L python-dev | grep Python.h y cuando probé esto en mi sistema no obtengo nada ??? anupam @ JAZZ: ~ / Python / hungarian-master $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / hungarian-master $ ¿cómo puedo resolverlo?
Lázaro
1
@jazzz Intente con este comando en su lugar:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau
8

Para Ubuntu 15.10 y Python 3:

sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install libpython3-dev
sudo apt-get install libpython3.4-dev
sudo apt-get install libpython3.5-dev
Martin Thoma
fuente
3

Este es el código de pitón que se extiende con C . No es necesario usar make. Python se encargará de la cppcompilación del código con las banderas adecuadas.

Primero necesita tener archivos de encabezado y una biblioteca estática. Instalar esos como,

sudo apt-get install python-dev

Ahora siga estos comandos para ejecutar example.pyen su código.

python setup.py build
cp  build/lib.linux-i686-2.7/hungarian.so .
python example.py

Nota: estoy usando python2.7, debes cuidar tu versión de python cuando ejecutes los comandos anteriores. Vale la pena mencionar que necesita instalarlo python-numpysi no lo tiene, ya que el script python lo necesita.

souravc
fuente
Gracias @souravc, funcionó pero cuando ejecuto $ python example.py me da anupam @ JAZZ: ~ / Python / hungarian-master $ python example.py [1 2 0 4 5 3 7 6] pero necesito calcular el beneficio neto de la asignación, aquí está dando salida para imprimir hungarian.lap (a) [0] ,, (¿qué es esto?)
Lázaro
1
@jazzz No tengo idea del problema húngaro. Creo que han proporcionado el código básico hungarian.cppy un ejemplo para ejecutar alguna función básica del mismo eample.py. Si necesita más, puede que tenga que escribir su propio código.
souravc