如何为 Python 编译 C 扩展

如何为 Python 编译 C 扩展

我正在尝试https://github.com/lthiery/SPI-Py通过运行来安装(在运行 Raspbian 的 Raspberry Pi 上)sudo python setup.py install

这会失败并出现错误

spi.c:20:20: fatal error: Python.h: No such file or directory
 #include <Python.h>

大概我需要安装一些库,但 SPI-Py 的“文档”几乎不存在。

我运行其他程序没有问题c

有一个/usr/lib/pypy-upstream/include/Python.h

答案1

看来C编译器(可能是gcc)找不到Python.h。您可以编辑 SPI-Py 的源以指向 PyPy 的版本,也可以安装适当的 python-dev 包来执行 SPI-Py 安装。

安装 python-dev

这是侵入性最小的方法,但它可能被认为是“笨重”,因为系统上已经安装了 PyPy。如果您使用的是 Python 2,请获取该开发包:

sudo apt-get install python-dev

或者,安装 Python 3 开发包:

sudo apt-get install python3-dev

获得适当的开发包后,尝试再次安装 SPI-Py。如果成功,您可以根据需要安全地删除 Python 开发包。要删除 Python 2 开发包:

sudo apt-get purge python-dev

或者,删除 Python 3 开发包:

sudo apt-get purge python3-dev

在执行任一命令后,您可以使用以下命令删除它们的依赖项:

sudo apt-get autoremove

修改SPI-Py

请注意,我尚未测试此解决方案。要强制 SPI-Py 使用 PyPy 的“Python.h”,您可能必须编辑 spi.c 文件。更改以下行:

module1 = Extension('spi', sources = ['spi.c'])

到:

module1 = Extension('spi',
                    include_dirs = ['/usr/lib/pypy-upstream/include/'],
                    sources = ['spi.c'])

之后,尝试再次安装 SPI-Py。

答案2

您应该安装该软件包python-dev

相关内容