致命错误:“ python.h”没有文件或目录?


10

在寻找匈牙利问题的解决方案时,我找到了这个GitHub链接

我浏览了该readme.md文件,并执行了其中描述的所有操作。复制hungarian.so到工作目录后,当我尝试hungarian.cpp使用进行编译时make hungarian,得到以下输出:

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

在Stack Overflow上找到了这个相关的问题,但是答案对我不起作用。

我对GitHub非常陌生,我不知道如何在上添加模块g++。有人可以帮我吗,下一步该怎么做?


4
那么跑步sudo apt-get install python-dev没用吗?
塞勒姆2014年

是的,@ Salem对我没有用。–
lazarus

Answers:


11

在查看https://github.com/hrldcpr/hungarian/blob/master/hungarian.cpp之后,似乎您同时需要:

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

因此,安装以下软件包:

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

要确定缺少的软件包(提供标题的软件包),请查看packages.ubuntu.com


,我也已经安装了这个工具,,, libpython2.7-dev已经是最新版本。
lazarus 2014年

1
@jazzz:自从您安装之后,python-dev您现在就拥有libpython2.7-devpython-dev。问题解决了不是吗?
西尔文·皮诺


Thanx @Sylvain Pineau,同时,我查看了stackoverflow.com/questions/11041299/… ,在我得到的评论之一中,很可能Python.h不在您的构建系统的include路径中。您可以通过运行dpkg -L python-dev |查找Python.h在哪里。grep Python.h,当我在系统上尝试此操作时,得到的不是nothig ???anupam @ JAZZ:〜/ Python /匈牙利语-master $ dpkg -L python-dev | grep Python.h anupam @ JAZZ:〜/ Python / hungarian-master $我该如何解决?
lazarus 2014年

1
@jazzz尝试使用此命令:dpkg-query -L libpython2.7-dev | grep Python.h
Sylvain Pineau

8

对于Ubuntu 15.10和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

3

这是用C扩展的 python代码。无需使用make。Python本身将cpp使用适当的标志来处理代码编译。

首先,您需要具有头文件和静态库。将它们安装为

sudo apt-get install python-dev

现在,按照以下命令example.py在您的代码中执行。

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

注意:我正在使用python2.7,执行上述命令时应注意python版本。值得一提的是,python-numpy如果没有python脚本,则需要安装。


谢谢@souravc,它起作用了,但是当我运行$ python example.py时,它给了我anupam @ JAZZ:〜/ Python / hungarian-master $ python example.py [1 2 0 4 5 3 7 6]但我需要计算净分配利润,这里给出的是print hungarian.lap(a)[0],(这是什么)的输出?
lazarus 2014年

1
@jazzz我对匈牙利问题一无所知。我认为他们提供了基本代码hungarian.cpp和示例以在中执行其一些基本功能eample.py。如果您需要更多,可能必须编写自己的代码。
souravc 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.