erro fatal: “python.h” sem arquivo ou diretório?

10

Enquanto procurava uma solução para o problema húngaro , encontrei este link do GitHub .

Examinei o readme.mdarquivo e executei tudo o que foi descrito lá. Depois de copiar hungarian.sopara o meu diretório de trabalho, quando tentei compilar hungarian.cppusando make hungarian, obtive esta saída:

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

Encontrei essa pergunta relacionada no Stack Overflow , mas a resposta não funcionou para mim.

Eu sou muito novo no GitHub, não sei como adicionar módulos g++. Alguém pode me ajudar com isso e o que fazer a seguir?

Lázaro
fonte
4
Então, correr sudo apt-get install python-devnão funcionou?
Salem
sim ,, @ Salem, não funcionou para mim .. #
lazarus

Respostas:

11

Depois de consultar https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp , parece que você precisa dos dois:

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

Portanto, instale os seguintes pacotes:

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

Para identificar os pacotes ausentes (os que fornecem os cabeçalhos), consulte packages.ubuntu.com .

Sylvain Pineau
fonte
, Eu também tinha esse instalado ,,, libpython2.7-dev já é a versão mais recente.
lazarus 21/09
1
@jazzz: Desde que você instalou, python-devagora você tem libpython2.7-devuma dependência python-dev. Problema resolvido, não é?
21414 Sylvain Pineau
1
@jazz Você pode verificar as dependências dos pacotes aqui: packages.ubuntu.com/trusty/python-dev e packages.ubuntu.com/trusty/libpython-dev
Sylvain Pineau
Thanx @Sylvain Pineau ,, bem, enquanto isso, olhei para stackoverflow.com/questions/11041299/… , e em um dos comentários que obtive, provavelmente o Python.h não está no caminho de inclusão dos seus sistemas de construção. Você pode descobrir onde está o seu Python.h executando o dpkg -L python-dev | grep Python.he quando tentei isso no meu sistema, não estou obtendo nada ??? anupam @ JAZZ: ~ / Python / mestre-húngaro $ dpkg -L python-dev | grep Python.h anupam @ JAZZ: ~ / Python / hungarian-master $ como posso resolver isso?
lazarus
1
@jazzz Tente com este comando:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau
8

Para o Ubuntu 15.10 e 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
fonte
3

Este é o código pitão que se estende com C . Não há necessidade de usar make. O próprio Python cuidará da cppcompilação de código com sinalizadores apropriados.

Primeiro, você precisa ter arquivos de cabeçalho e uma biblioteca estática. Instale-os como,

sudo apt-get install python-dev

Agora siga estes comandos para executar example.pyno seu código.

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

Nota: Estou usando python2.7, você deve cuidar da sua versão do python ao executar os comandos acima. Vale ressaltar que você precisa instalá- python-numpylo se não o tiver, pois o script python precisa.

souravc
fonte
Thanx @souravc, funcionou, mas quando executo $ python example.py, ele me dá anupam @ JAZZ: ~ / Python / mestre-húngaro $ python example.py [1 2 0 4 5 3 7 6], mas preciso calcular o lucro líquido da atribuição ,, aqui está dando saída para impressão húngara.lap (a) [0] ,, (o que é isso)?
lazarus
1
@jazzz Não faço ideia do problema húngaro. Eu acho que eles forneceram o código básico hungarian.cppe um exemplo para executar algumas funções básicas dele eample.py. Se precisar de mais, pode ser necessário escrever seu próprio código.
souravc 21/09/14