致命错误:Python.h文件或目录不存在 - 但是已经安装了python-dev。

5

我正在尝试在Ubuntu上安装mod_wsgi。按照mod_wsgi网站上的说明运行“sudo make”命令时,出现以下错误:

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

mod_wsgi故障排除部分和SO上的其他帖子(1,2,3)都建议安装正确版本的python-dev, 以解决问题。以下输出结果显示已经完成此步骤。 Python3运行3.6.7,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找不到它。我看了这篇StackOverflow帖子(4),但是我认为它并不适用于我,因为我可以找到Python.h。

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

我不确定接下来该怎么做。Python3.6-dev已安装,我可以找到Python.h,但make无法找到它。我使用的是Pycharm自动创建的虚拟环境,我有一个预感它与问题有关,但我不确定如何跟进这个预感。我在同一个终端上运行makepython3apt-get,所以它们应该使用相同的环境变量(这是我的理解)。
有没有人对下一步有什么建议?

uWSGI配置文件? - Debendra
2个回答

4

针对上面的回答(因为我有点固执),我要强调一下,你需要安装 python[3]-dev 包(这个包提供了 Python.h)。在Ubuntu操作系统上,可以使用命令 apt install python3-dev 来安装。


我通过安装python-dev解决了我的问题,以便使用仅适用于Python 2的脚本。 - baptx

1
我为mod_wsgi运行了./configure,并看到输出checking for python... /usr/bin/python。当我运行locate Python.h时,它给出了/usr/include/python3.6m/Python.h。因此,配置似乎找到了错误版本的python。然后我按照mod_wsgi文档的建议运行了./configure --with-python=/usr/bin/python3.6m。现在运行make成功了。
后来我发现这是安装mod_wsgi的较困难的方法。我最终只是按照tecadmin指南所说的方式运行了命令sudo apt-get install libapache2-mod-wsgi。我这样做了,现在mod_wsgi与apache一起使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接