6

我有一个带有扩展部分的 distutils 设置脚本,它看起来像这样:

from distutils.core import setup, Extension

my_module = Extension('my_module',
                sources = ['my_file.c', 'my_other_file.c'])

setup (name = 'my_module',
       version = '1.0',
       description = 'My module',
       ext_modules = [my_module])

setup.py build在我的 Mac 上运行正常。当我移动到 Debian 机器时,它失败了:

error: Python/Python.h: No such file or directory

我已经安装python2.6python2.6-dev安装了,文件位于/usr/include/Python2.6.

它为问题文件执行的命令:

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c my_module.c -o -build/XYZ/my_module.o

所以它传递了头文件的位置。

Mac 与 Linux 环境之间唯一明显的区别是 gcc-4.2 与 gcc-4.4 以及 Python 2.7 与 Python 2.6

想法?

编辑:

在有问题的 C 文件中:

#include <Python/Python.h>
#include <Python/structmember.h>
4

2 回答 2

6

可能在您的模块中,您需要include "Python.h"代替"Python/Python.h"?

或者您可以尝试导出包含路径,然后尝试使用 gcc 或 g++ 再次编译?

export C_INCLUDE_PATH=/usr/include/python2.6:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/usr/include/python2.6:$CPLUS_INCLUDE_PATH
于 2011-02-24T11:34:01.753 回答
1

就我而言,我错过了 python3-dev,sudo apt-get install python3-dev修复了它。

于 2017-05-19T17:24:15.107 回答