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

2 つのコマンドのいずれかを実行した後、次を使用して依存関係を削除できます。

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を再インストールしてみてください。

おすすめ記事