Como compilar a extensão C para Python

1

Estou tentando instalar o https://github.com/lthiery/SPI-Py (em um Raspberry Pi rodando Raspbian) executando sudo python setup.py install

Isso falha com erro

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

Presumivelmente eu preciso instalar alguma biblioteca, mas a "documentação" com o SPI-Py é quase inexistente.

Não tenho nenhum problema em executar outros programas c .

Existe um /usr/lib/pypy-upstream/include/Python.h

    
por Milliways 11.04.2016 / 06:21

2 respostas

2

Parece que o compilador C (provavelmente o gcc) não consegue encontrar o Python.h. Você pode editar a fonte do SPI-Py para apontar para a versão do PyPy, ou você pode instalar o pacote python-dev apropriado para executar a instalação do SPI-Py.

Instale o python-dev

Este é o método menos intrusivo, mas pode ser considerado "volumoso", já que você já tem o PyPy no sistema. Se você estiver usando o Python 2, pegue o pacote dev:

sudo apt-get install python-dev

Ou, para instalar o pacote do Python 3 dev:

sudo apt-get install python3-dev

Depois de ter o pacote dev apropriado, tente instalar o SPI-Py novamente. Se tiver sucesso, você pode remover com segurança o pacote de desenvolvimento do Python, se desejar. Para remover o pacote do Python 2 dev:

sudo apt-get purge python-dev

Ou, para remover o pacote do Python 3 dev:

sudo apt-get purge python3-dev

Após um dos comandos, você pode remover suas dependências com:

sudo apt-get autoremove

Modifique o SPI-Py

Por favor, note que eu não testei esta solução. Para forçar o SPI-Py a usar o "Python.h" do PyPy, você provavelmente terá que editar o arquivo spi.c. Altere a seguinte linha:

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

para:

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

Depois disso, tente instalar o SPI-Py novamente.

    
por 11.04.2016 / 08:14
2

Você deve instalar o pacote python-dev .

    
por 11.04.2016 / 08:13

Tags