致命错误:Python.h没有此类文件或目录-但已安装python-dev

时间:2019-02-14 08:58:37

标签: python ubuntu python-3.6 mod-wsgi

我正在尝试在Ubuntu上安装mod_wsgi。运行“ sudo make”命令as described on the mod_wsgi website时,出现错误:

src/server/wsgi_python.h:24:10: fatal error: Python.h: No such file or directory

SO上的mod_wsgi troubleshoot section和其他文章(123)表示要安装正确版本的python-dev。已经基于以下输出完成了此操作。运行3.6.7的python3,并且apt-get表示python3-dev是最新版本的3.6.7。

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 

$ sudo apt-get install python3-dev
...
python3-dev is already the newest version (3.6.7-1~18.04).
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.

因此似乎Python.h文件存在,但make找不到它。我看了这篇SO帖子(4),但由于我 am 能够找到Python.h,因此我认为这不适用于我。

$ locate Python.h
/usr/include/python3.6m/Python.h

我不确定下一步该怎么做。已安装Python3.6-dev,我可以找到Python.h,但是make无法定位。我正在使用Pycharm自动为我创建的venv,我有预感,这个问题涉及到该问题,但是我不确定该如何应对。我在makepython3的同一终端上运行apt-get,因此它们应该使用相同的环境变量(据我了解)。

任何人对下一步的建议吗?

2 个答案:

答案 0 :(得分:3)

为了补充上面的答案(因为我很固执),我会注意到您必须安装 const path = require("path"); module.exports = { webpack: { alias: { "@app": path.resolve(__dirname, "src"), } } }; 包(这是提供 python[3]-dev 的包)。在 ubuntu 上,Python.h 帮我解决了这个问题。

答案 1 :(得分:0)

我为mod_wsgi运行了./configure,并看到了输出checking for python... /usr/bin/python。当我运行locate Python.h时,它会给我/usr/include/python3.6m/Python.h。因此,似乎配置发现了错误的python版本。然后,我按照the mod_wsgi documentation的建议运行了./configure --with-python=/usr/bin/python3.6m。现在运行make成功了。

后来我发现这是安装mod_wsgi的更艰难的方法。我最后跟随this tecadmin guide,它说要运行命令sudo apt-get install libapache2-mod-wsgi。这就是我所做的,mod_wsgi现在正在使用apache。