DonutGaz
DonutGaz

Reputation: 1542

PIP install unable to find ffi.h even though it recognizes libffi

I have installed libffi on my Linux server as well as correctly set the PKG_CONFIG_PATH environment variable to the correct directory, as pip recognizes that it is installed; however, when trying to install pyOpenSSL, pip states that it cannot find file 'ffi.h'. I know both thatffi.h exists as well as its directory, so how do I go about closing this gap between ffi.h and pip?

Upvotes: 94

Views: 106019

Answers (8)

Julio Cezar Riffel
Julio Cezar Riffel

Reputation: 89

Ubuntu/Mint

sudo apt-get install libffi6 libffi-dev 

Upvotes: 5

Roozbeh Zabihollahi
Roozbeh Zabihollahi

Reputation: 7347

on CentOS:

yum install libffi-devel

Upvotes: 4

Volker Kerkhoff
Volker Kerkhoff

Reputation: 534

On Debian,

apt-get install libffi-dev

Upvotes: 4

ChrisN
ChrisN

Reputation: 431

To add to mhawke's answer, usually the Debian/Ubuntu based systems are "-dev" rather than "-devel" for RPM based systems

So, for Ubuntu it will be apt-get install libffi libffi-dev

RHEL, CentOS, Fedora (up to v22) yum install libffi libffi-devel

Fedora 23+ dnf install libffi libffi-devel

OSX/MacOS (assuming homebrew is installed) brew install libffi

Upvotes: 26

Lennart Regebro
Lennart Regebro

Reputation: 172269

You need to install the development package as well.

libffi-dev on Debian/Ubuntu, libffi-devel on Redhat/Centos/Fedora.

Upvotes: 274

user707650
user707650

Reputation:

You can use CFLAGS (and LDFLAGS or various other compiler and linker options) in front of the pip command (ditto for setup.py):

Something similar to the following should work:

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

Upvotes: 23

nneonneo
nneonneo

Reputation: 179452

pip packages usually don't use pkg-config. Therefore, you should set CFLAGS and LDFLAGS manually:

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

Upvotes: 4

mhawke
mhawke

Reputation: 87084

You need to install the development package for libffi.

On RPM based systems (Fedora, Redhat, CentOS etc) the package is named libffi-devel.

Not sure about Debian/Ubuntu systems, I'm sure someone else will pipe up with that.

Upvotes: 3

Related Questions