PIP-Installation kann ffi.h nicht finden, obwohl libffi erkannt wird

76

Ich habe libffiauf meinem Linux-Server installiert und die PKG_CONFIG_PATHUmgebungsvariable korrekt auf das richtige Verzeichnis eingestellt, da piperkannt wird, dass sie installiert ist. Beim Versuch, pyOpenSSL zu installieren, gibt pip jedoch an, dass die Datei 'ffi.h' nicht gefunden werden kann. Ich kenne sowohl das ffi.hvorhandene als auch das Verzeichnis. Wie kann ich diese Lücke zwischen ffi.hund schließen pip?

DonutGaz
quelle
Wenn Sie dies tun, um scrappy zu installieren, folgen Sie diesem Tutorial clasense4.wordpress.com/2015/11/25/…
Dr. Deo

Antworten:

20

Sie können CFLAGS(und LDFLAGSoder verschiedene andere Compiler- und Linker-Optionen) vor dem pipBefehl verwenden (dito für setup.py):

Ähnliches sollte funktionieren:

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

quelle
7
Dies hat bei mir nicht funktioniert, sondern bei der Installation libffi-dev.
Codersofthedark
Dies hat auch meinen fehlerhaften pip3 install jupyter behoben, der einen Fehler beim Kompilieren von ffi.h auf raspbian
Sebapi
244

Sie müssen auch das Entwicklungspaket installieren.

libffi-devauf Debian / Ubuntu, libffi-develauf Redhat / Centos / Fedora.

Lennart Regebro
quelle
6
Beachten Sie, dass das OP "Ich weiß sowohl, dass ffi.h existiert, als auch sein Verzeichnis" angibt, was darauf hinweist, dass die Entwicklungsversion (Header) bereits installiert ist. Diese Antwort löst also ein anderes Problem.
1
apk add libffi-devarbeitete für mich an Alpine 3.11.6. Danke
hmacias
23

Um die Antwort von mhawke zu ergänzen, sind die Debian / Ubuntu-basierten Systeme für RPM-basierte Systeme normalerweise "-dev" und nicht "-devel"

Für Ubuntu wird es also so seinapt-get install libffi libffi-dev

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

Fedora 23+ dnf install libffi libffi-devel

OSX / MacOS (vorausgesetzt, Homebrew ist installiert)brew install libffi

ChrisN
quelle
2
Für Ubuntu ist es jetzt libffi6.
Darkhipo
@darkhipo - Beachten Sie, dass die Entwicklungsbibliothek, dh libffi-dev, immer noch benannt ist libffi-dev(ohne die 6). Dies ist relevant für 11/2019 mit Ubuntu 18.04.
Guy Avraham
5

Ubuntu / Mint

sudo apt-get install libffi6 libffi-dev 
Julio Cezar Riffel
quelle
Bitte erläutern Sie
JJJ
ChrisN hat dies bereits behandelt. Wenn Ihre Antwort einen Mehrwert bietet, erläutern Sie dies bitte.
Jpaugh
4

pipPakete werden normalerweise nicht verwendet pkg-config. Daher sollten Sie einstellen CFLAGSund LDFLAGSmanuell:

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

Auf Debian,

apt-get install libffi-dev
Volker Kerkhoff
quelle
4

auf CentOS:

yum install libffi-devel
Roozbeh Zabihollahi
quelle
Dies ist ein Duplikat dieser vorhandenen Antwort: stackoverflow.com/questions/31508612/…
karel
1
Richtig @karel, das habe ich nicht gesehen, als ich die Antwort geschrieben habe. Ich möchte es immer noch behalten, da bereits jemand davon profitiert hat.
Roozbeh Zabihollahi
3

Sie müssen das Entwicklungspaket für installieren libffi.

Auf RPM-basierten Systemen (Fedora, Redhat, CentOS usw.) wird das Paket benannt libffi-devel.

Ich bin mir nicht sicher, was Debian / Ubuntu-Systeme angeht. Ich bin mir sicher, dass sich jemand anderes damit auseinandersetzen wird.

mhawke
quelle