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?


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

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.


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


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


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



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.