web-dev-qa-db-fra.com

L'installation PIP ne parvient pas à trouver ffi.h même s'il reconnaît libffi

J'ai installé libffi sur mon serveur Linux et ai correctement paramétré la variable d'environnement PKG_CONFIG_PATH dans le bon répertoire, car pip reconnaît qu'elle est installée. Cependant, lors de la tentative d'installation de pyOpenSSL, pip indique qu'il ne peut pas trouver le fichier 'ffi.h'. Je sais que thatffi.h existe aussi bien que son répertoire. Alors, comment puis-je combler cet écart entre ffi.h et pip?

62
DonutGaz

Vous pouvez utiliser CFLAGS (et LDFLAGS ou diverses autres options du compilateur et de l'éditeur de liens) devant la commande pip (idem pour setup.py):

Quelque chose de semblable à ce qui suit devrait fonctionner:

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

Vous devez également installer le package de développement.

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

216
Lennart Regebro

Pour ajouter à la réponse de mhawke, les systèmes basés sur Debian/Ubuntu sont généralement "-dev" plutôt que "-devel" pour les systèmes basés sur RPM.

Donc, pour bunt ce sera apt-get install libffi libffi-dev

RHEL, CentOS, Fedora (jusqu'à la version 22)yum install libffi libffi-devel

Fedora 23 +dnf install libffi libffi-devel

OSX/MacOS (en supposant que homebrew est installé) brew install libffi

18
ChrisN

Sur Debian,

apt-get install libffi-dev
3
Volker Kerkhoff

Les paquets pip n'utilisent généralement pas pkg-config. Par conséquent, vous devez définir CFLAGS et LDFLAGS manuellement:

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

sur CentOS:

yum install libffi-devel
1
Roozbeh Zabihollahi

Ubuntu/Mint

Sudo apt-get install libffi6 libffi-dev 
1

Vous devez installer le package de développement pour libffi.

Sur les systèmes basés sur RPM (Fedora, Redhat, CentOS, etc.), le package s'appelle libffi-devel.

Pas sûr des systèmes Debian/Ubuntu, je suis sûr que quelqu'un d'autre s'en chargera.

1
mhawke