web-dev-qa-db-ja.com

PIPインストールは、libffiを認識してもffi.hを見つけることができません

Linuxサーバーにlibffiをインストールし、pipがインストールされていることを認識するため、PKG_CONFIG_PATH環境変数を正しいディレクトリに正しく設定しました。ただし、pyOpenSSLをインストールしようとすると、pipはファイル 'ffi.h'を見つけることができないと述べています。 thatffi.hとそのディレクトリの両方を知っているので、ffi.hpipの間のこのギャップを埋めるにはどうすればよいですか?

62
DonutGaz

CFLAGS(およびLDFLAGSまたはその他のさまざまなコンパイラーとリンカーのオプション)をpipコマンド(setup.pyの同上)の前で使用できます。

次のようなものが機能するはずです。

CFLAGS=-I/usr/include/libffi/include pip install pyOpenSSL
16
user707650

開発パッケージもインストールする必要があります。

libffi-dev Debian/Ubuntuで、libffi-devel Redhat/Centos/Fedoraで。

216
Lennart Regebro

Mhawkeの答えに追加するために、Debian/Ubuntuベースのシステムは通常、RPMベースのシステムでは「-devel」ではなく「-dev」です。

したがって、buntの場合はapt-get install libffi libffi-devになります

RHEL、CentOS、Fedora(v22まで)yum install libffi libffi-devel

Fedora 23 +dnf install libffi libffi-devel

OSX/MacOS(homebrewがインストールされていると仮定)brew install libffi

18
ChrisN

Debianでは、

apt-get install libffi-dev
3
Volker Kerkhoff

pipパッケージは通常pkg-configを使用しません。したがって、CFLAGSおよびLDFLAGSを手動で設定する必要があります。

CFLAGS=$(pkg-config --cflags libffi) LDFLAGS=$(pkg-config --libs libffi) pip install pyOpenSSL
3
nneonneo

centOSの場合:

yum install libffi-devel
1

Ubuntu/Mint

Sudo apt-get install libffi6 libffi-dev 
1

libffiの開発パッケージをインストールする必要があります。

RPMベースのシステム(Fedora、Redhat、CentOSなど)では、パッケージの名前はlibffi-develです。

Debian/Ubuntuシステムについてはわかりませんが、他の誰かがそれをパイプするでしょう。

1
mhawke