致命错误:Python.h: 没有那个文件或目录。

1825

我正在尝试使用C扩展文件构建共享库,但首先必须使用以下命令生成输出文件:

gcc -Wall utilsmodule.c -o Utilc

执行命令后,我收到了以下错误信息:
> utilsmodule.c:1:20: fatal error: Python.h: No such file or directory
compilation terminated.

我尝试了互联网上提供的所有建议解决方案,但问题仍然存在。我对 Python.h 没有任何问题。我成功地在我的电脑中找到了该文件。

35个回答

2
这意味着你的编译器默认包含路径中没有Python.h文件。你是否将其系统范围内或本地安装了?你使用的是什么操作系统?
你可以使用-I<path>标志来指定额外的目录,供编译器查找头文件。你可能还需要使用-L<path>选项,以便gcc能够找到你将使用-l<name>链接的库。

2

问题可能是您没有安装适当的Python库头文件。如果您使用的是Linux Solus,则可以通过使用以下命令来解决:

sudo eopkg install python3-devel

1
我遇到的情况是我的Python.h在目录/usr/include/python3.8/usr/include/python2.7中,只需像-I /usr/include/python3.8这样将路径提供给gcc即可。将python的版本替换为您自己的版本。

1

如果您已经安装了Python,并且想要与特定版本的Python链接,您可以从Python获取相关的包含路径。

>>> import sysconfig
>>> sysconfig.get_path('include')
'/usr/include/python3.10' # Example output

您可以使用shell脚本手动指定包含路径/构建针对特定的Python版本:

#!/bin/sh
python_include=$(python3.10 -c "import sysconfig; print(sysconfig.get_path('include'))")
gcc -Wall utilsmodule.c -o Utilc -I"$python_include"

0
如果您使用cmake构建项目,可以使用此示例。
cmake_minimum_required(VERSION 2.6)
project(demo)
find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
add_executable(demo main.cpp)
target_link_libraries(demo ${PYTHON_LIBRARIES})

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