La instalación de PIP no puede encontrar ffi.h a pesar de que reconoce libffi

76

He instalado libffien mi servidor Linux y he configurado correctamente la PKG_CONFIG_PATHvariable de entorno en el directorio correcto, ya pipque reconoce que está instalado; sin embargo, al intentar instalar pyOpenSSL, pip indica que no puede encontrar el archivo 'ffi.h'. Sé que ffi.hexiste tanto como su directorio, entonces, ¿cómo hago para cerrar esta brecha entre ffi.hy pip?

DonutGaz
fuente
si está haciendo esto para instalar scrappy, siga este tutorial clasense4.wordpress.com/2015/11/25/…
Dr Deo

Respuestas:

20

Puede usar CFLAGS(y / LDFLAGSo varias otras opciones de compilador y enlazador) delante del pipcomando (lo mismo para setup.py):

Algo similar a lo siguiente debería funcionar:

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

fuente
7
Esto no funcionó para mí, sino que lo libffi-devhizo la instalación .
codersofthedark
esto también solucionó mi falla en la instalación de pip3 jupyter que dio un error al compilar ffi.h en raspbian
Sebapi
245

También debe instalar el paquete de desarrollo.

libffi-deven Debian / Ubuntu, libffi-develen Redhat / Centos / Fedora.

Lennart Regebro
fuente
6
Tenga en cuenta que el OP dice "Sé que existe ffi.h así como su directorio", lo que indica que la √ersion de desarrollo (encabezados) ya está instalada. Entonces esta respuesta resuelve otro problema.
1
apk add libffi-devfuncionó para mí en Alpine 3.11.6. Gracias
hmacias
23

Para agregar a la respuesta de mhawke, generalmente los sistemas basados ​​en Debian / Ubuntu son "-dev" en lugar de "-devel" para los sistemas basados ​​en RPM

Entonces, para Ubuntu seráapt-get install libffi libffi-dev

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

Fedora 23+ dnf install libffi libffi-devel

OSX / MacOS (asumiendo que homebrew está instalado)brew install libffi

ChrisN
fuente
2
Para ubuntu ahora es libffi6.
darkhipo
@darkhipo: tenga en cuenta que la biblioteca de desarrollo, es decir, libffi-dev, todavía se nombra libffi-dev(sin el 6). Esto es relevante para 11/2019 con Ubuntu 18.04.
Guy Avraham
5

Ubuntu / Mint

sudo apt-get install libffi6 libffi-dev 
Julio Cezar Riffel
fuente
por favor elabora
JJJ
ChrisN ya cubrió esto. Si su respuesta agrega valor adicional, explique.
jpaugh
4

piplos paquetes generalmente no usan pkg-config. Por lo tanto, debe configurar CFLAGSy LDFLAGSmanualmente:

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

En Debian,

apt-get install libffi-dev
Volker Kerkhoff
fuente
4

en CentOS:

yum install libffi-devel
Roozbeh Zabihollahi
fuente
Este es un duplicado de esta respuesta existente: stackoverflow.com/questions/31508612/…
karel
1
Correcto @karel, no vi eso cuando estaba escribiendo la respuesta. Todavía quiero conservarlo ya que alguien ya se ha beneficiado de él.
Roozbeh Zabihollahi
3

Necesita instalar el paquete de desarrollo para libffi.

En sistemas basados ​​en RPM (Fedora, Redhat, CentOS, etc.), el paquete se denomina libffi-devel.

No estoy seguro acerca de los sistemas Debian / Ubuntu, estoy seguro de que alguien más lo hará.

mhawke
fuente