我正在关注如何使用C \ C ++代码扩展Python的this tutorial。
名为“使用GCC for Microsoft Windows构建扩展模块”的部分对我失败,出现以下错误:
fatal error: Python.h: No such file or directory
名为“使用Microsoft Visual C ++构建扩展模块”的部分也失败并出现类似错误:
fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
我该怎么做才能解决这个问题?
答案 0 :(得分:51)
对于Linux,Ubuntu用户在编译时解决缺少Python.h的问题,只需在终端中运行以下命令即可安装python的开发包:
在终端:sudo apt-get install python-dev
答案 1 :(得分:17)
确定哪些失败将解决您的问题。
来自你链接的文章:
gcc -c hellomodule.c -I / PythonXY / include
gcc -shared hellomodule.o -L / PythonXY / libs -lpythonXY -o hello.dll
他们假设您在默认位置安装了python c:\ pythonXY(其中X是主要版本号,Y是次要版本号)。(在您的情况下是Python26)如果您将python放在其他地方替换/ PythonXY在哪里你装过它了吗?
答案 2 :(得分:0)
Python官方文档已经清楚了。签出here
头文件通常与Python一起安装。在Unix上,它们位于目录prefix / include / pythonversion /和exec_prefix / include / pythonversion /中,其中prefix和exec_prefix由Python的配置脚本的相应参数定义,版本为'%d。%d'%sys。版本信息[:2]。在Windows上,标头安装在prefix / include中,其中prefix是为安装程序指定的安装目录。
要包含标头,请将两个目录(如果不同)放在编译器的包含搜索路径中。不要将父目录放在搜索路径上,然后使用#include;这将中断多平台构建,因为前缀下与平台无关的标头包括来自exec_prefix的特定于平台的标头。
并且它们提供了一种方便的方法来获取我们应该传递给编译器的正确cflags。 here
例如,这是运行命令后得到的内容
root@36fd2072c90a:/# /usr/bin/python3-config --cflags
-I/usr/include/python3.5m -I/usr/include/python3.5m -Wno-unused-result -Wsign-compare -g -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
将这些标志传递给编译器,它将起作用。