Python: Das Modul _imagingft C ist nicht installiert

73

Ich habe viele Lösungen ausprobiert, die im Internet veröffentlicht wurden. Sie funktionieren nicht.

>>> import _imaging
>>> _imaging.__file__
'C:\\python26\\lib\\site-packages\\PIL\\_imaging.pyd'
>>>

Das System kann also das _imaging finden, aber immer noch keine TrueType-Schriftart verwenden

from PIL import Image, ImageDraw, ImageFilter, ImageFont


im = Image.new('RGB', (300,300), 'white')
draw = ImageDraw.Draw(im)
font = ImageFont.truetype('arial.ttf', 14)
draw.text((100,100), 'test text', font = font)

Löst diesen Fehler aus:

ImportError: The _imagingft C module is not installed

File "D:\Python26\Lib\site-packages\PIL\ImageFont.py", line 34, in __getattr__
  raise ImportError("The _imagingft C module is not installed")
user483144
quelle

Antworten:

57

Ihre installierte PIL wurde ohne libfreetype kompiliert.

Sie können das vorkompilierte Installationsprogramm von PIL (kompiliert mit libfreetype) hier (und viele andere vorkompilierte Python C-Module) herunterladen:

http://www.lfd.uci.edu/~gohlke/pythonlibs/

Imran
quelle
1
Wenn Sie Linux-Binärdateien möchten, müssen Sie diese vermutlich aus dem Software-Repository Ihrer Distribution herunterladen.
Imran
Dies war genau das, was ich brauchte, um TTF-Unterstützung unter Windows zu erhalten. Die PIL-Binärdateien auf der offiziellen Seite hatten beim Laden von _imagingft.pyd Probleme mit sxs. Vielen Dank!
Michael Labbé
Heutzutage können Sie Pillow auch von PyPI - dem Python Package Index - erhalten .
Martineau
Sieht so aus, als gäbe es kein PIL (kein Kissen) mehr. Gibt es eine andere Quelle zum Herunterladen?
LA_
2
@LA_ Pillow ist ein Ersatz für PIL
Imran
80

Unter Ubuntu muss libfreetype-dev installiert sein, bevor Sie PIL kompilieren können.

dh

$ sudo apt-get install libfreetype6-dev
$ sudo -s
\# pip uninstall pil
\# pip install pil

PS! Wenn Sie pip install als sudo ausführen, werden auf den meisten Ubuntu-Versionen normalerweise Pakete nach / usr / local / lib installiert. Sie können Pil stattdessen in einer virtuellen Umgebung (virtualenv oder venv) in einem Pfad installieren, der dem Benutzer gehört.

Sie können auch Pillow anstelle von Pil installieren, was meiner Meinung nach API-kompatibel ist: https://python-pillow.org .

Sindre Myren
quelle
Danke vielmals! Es hat mir sofort geholfen!
Piotr Sobczyk
Es gibt einen Fehler in der "aptitude install aptitude install";)
anders
11
Dies funktioniert bei mir nicht (Ubuntu 12.04, Pip 1.1.7, Python 2.7). Ich habe pip deinstalliert, apitude libfreetype6-dev installiert und dann ausgeführt sudo pip install --upgrade pil, aber das Problem besteht weiterhin.
Matthew Flaschen
Hat auch bei mir nicht funktioniert (auf Mac). Ich habe libfreetype von der Quelle (von hier ) installiert und dann ausgeführt sudo pip install --upgrade pil, aber mir wurde gesagt, dass PIL auf dem neuesten Stand ist. Ganz Python und das ursprüngliche Skript erneut, bekam den gleichen Fehler.
Scubbo
2
Das hat bei mir auf Xubuntu funktioniert. sudo apt-get install libfreetype6-dev. Und dann lief ich in meiner virtuellen Umgebung, um Pillow (ohne Sudo) zu installieren. Sie möchten in virtuellen Umgebungen nicht sudo pip.
Pymarco
46

Folgendes hat für mich unter Ubuntu 14.04.1 64 Bit funktioniert:

sudo apt-get install libfreetype6-dev

Dann in der virtuellen Umgebung:

pip uninstall pillow
pip install --no-cache-dir pillow
Rafay
quelle
1
Danke für den Cache! Außerdem können wir den Pip-Cache entfernen, bevor wir Pillow neu installieren: rm -rf ~ / .cache / pip
LennyLip
2
Nur ein Kommentar, in CentOS 6: yum installiere freetype-devel libjpeg-devel libpng-devel
azuax
16

Lösung für CentOS 6 (und wahrscheinlich auch für andere Drehzahlen):

yum install freetype-devel libjpeg-devel libpng-devel

pip uninstall pil Pillow
pip install pil Pillow
fsw
quelle
Verwenden Sie den ersten Befehl, um * devel zu installieren, und installieren Sie dann Python-Imaging mit "yum" (im Epel-Repository), um das Bild anzuzeigen.
Fanchyna
14

In OS X habe ich dies getan, um das Problem zu lösen:

pip uninstall PIL
ln -s /usr/X11/include/freetype2 /usr/local/include/
ln -s /usr/X11/include/ft2build.h /usr/local/include/
ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/
ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib
pip install PIL
suzanshakya
quelle
1
Hat bei mir nicht funktioniert - nach jeder Zeile, die ln -s ...ich bekam ln: /usr/local/lib/libfreetype.dylib: File exists. Problem bleibt bestehen. Hast du noch weitere Ideen?
Scubbo
Würden Sie es versuchen ln -sf? fÜberschreibt die vorhandenen Dateien. Stellen Sie daher sicher, dass Sie die vorhandenen Dateien sichern.
Suzanshakya
Einfach ausprobiert ln -sf, wie empfohlen. Nach der ersten solchen Zeile bekam ich ln: /usr/local/include//freetype2: Operation not permitted. Das Wiederholen des Vorgangs mit sudoergab den gleichen Fehler.
Scubbo
1
@volvox, versuche Freetype mit zu installieren brew install freetype.
Suzanshakya
1
@suzanshakya danke, das hat perfekt funktioniert (nachdem ich Homebrew installiert hatte).
Volvox
12

Grundsätzlich müssen Sie freetype installieren, bevor Sie PIL installieren.

Wenn Sie Homebrew unter OS X verwenden, ist dies nur eine Frage von:

brew remove pil
brew install freetype
brew install pil
Roshambo
quelle
Wenn es nicht funktioniert, fügen Sie es brew link freetypevor der Installation von PIL hinzu.
user805627
1
Das Paket wird auch freetypefür Macport-Benutzer aufgerufen.
DanH
1
Ich musste neu installieren freetypeund libjpegdurchbrauen brew link --overwrite freetypeund sie brew link --overwrite libjpegdann mit neu verknüpfen und dann neu installieren pil, dann funktionierte es endlich. Hoffe das hilft jedem
Gitaarik
brew install pilRückgabefehler:ImportError: The _imagingft C module is not installed
Deng Haijun
12

Arbeitete für Ubuntu 12.10:

sudo pip uninstall PIL
sudo apt-get install libfreetype6-dev
sudo apt-get install python-imaging
DmitrySandalov
quelle
2
Ich habe die dritte Zeile von "sudo apt-get install python-images" in "pip install PIL" geändert und es hat funktioniert.
Zephyr
1
Arbeitete für mich auf Debian, beachten Sie, dass ich libjpeg-dev zlib1g-dev libpng12-dev bereits installiert hatte
cgl
2

Für OS X (ich verwende 10.6, sollte aber für andere funktionieren) konnte ich diesen Fehler mithilfe der Ratschläge aus diesem Beitrag umgehen . Grundsätzlich müssen Sie einige der Abhängigkeiten installieren und dann PIL neu installieren.

Bovard
quelle
2

Für mich hat keine der bisher hier veröffentlichten Lösungen funktioniert. Ich habe hier eine andere Lösung gefunden: http://codeinthehole.com/writing/how-to-install-pil-on-64-bit-ubuntu-1204/

Installieren Sie zuerst die Entwicklungspakete:

$ sudo apt-get install python-dev libjpeg-dev libfreetype6-dev zlib1g-dev

Dann erstellen Sie einige Symlinks:

$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/
$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/

Danach sollte PIL gut kompilieren:

$ pip install PIL --upgrade
Minzwurst
quelle
2

Die folgenden Arbeiten unter Ubuntu 12.04:

pip uninstall PIL
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
pip install PIL --upgrade

Wenn Sie "- JPEG-Unterstützung verfügbar" sehen, bedeutet dies, dass es funktioniert.

Aber wenn es beim Bearbeiten Ihres JPEG-Bildes immer noch nicht funktioniert, überprüfen Sie den Python-Pfad !!
Mein Python-Pfad ist fehlgeschlagen '/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/', daher bearbeite ich ~/.bashrcden folgenden Code zu dieser Datei hinzufügen:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/

dann endlich klappt es !!

Jason Huang
quelle
1

Ubuntu 11.10 installiert zlib- und freetype2-Bibliotheken gemäß der Multi-Arch-Spezifikation (z /usr/lib/i386-linux-gnu. B. ). Sie können PIL-Setup-Umgebungsvariablen verwenden, um sie zu finden. Es funktioniert jedoch nur bei PIL-Versionen, die über das pil-117-Tag hinausgehen.

export PIL_SETUP_ZLIB_ROOT=/usr/lib/i386-linux-gnu
export PIL_SETUP_FREETYPE_ROOT=/usr/lib/i386-linux-gnu
pip install -U PIL

Da Ihr Multi-Arch-Pfad möglicherweise unterschiedlich ist (x86-64), ist es vorzuziehen, die -devPakete zu installieren und pkg-configden richtigen Pfad abzurufen.

pkg-config --variable=libdir zlib
pkg-config --variable=libdir freetype2

Eine andere Möglichkeit, die Barry in Pillows setup.py angegeben hat, besteht dpkg-architecture -qDEB_HOST_MULTIARCHdarin, das richtige Bibliotheksverzeichnissuffix zu erhalten.

Siehe https://bitbucket.org/effbot/pil-2009-raclette/issue/18

Milton
quelle
1

Ich habe Homebrew verwendet, um Freetype zu installieren, und ich habe Folgendes in / usr / local / lib:

libfreetype.6.dylib libfreetype.a libfreetype.dylib

Aber das Übliche:

pip install pil

Funktioniert bei mir nicht, also habe ich verwendet:

pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz

tc_geophysics
quelle
Die zweite Option hat bei mir funktioniert. Danke @tc_geophysics
MegaBytes
1

Auf meinem Mac funktionieren die folgenden Schritte im Terminal:

$ brew install freetype
$ sudo pip uninstall pil
$ sudo pip install pillow

hofft, dass es für Sie funktioniert. Viel Glück!

Yun.Lu
quelle
Wirkt sich nicht eher sudo pipauf den globalen Pil als auf den Pil der virtuellen Umgebung aus?
Saurabh Ariyan
-1

【Gelöst】
In meinem Ubuntu12.04 funktioniert es, nachdem ich Python-Imaging mit apt-get installiert habe.

Joest
quelle