Das Problem bei der Installation von PIL mithilfe von virtualenv oder buildout

70

Wenn ich PIL mit easy_install oder buildout installiere, wird es so installiert, dass ich 'Image importieren' muss, nicht 'aus PIL-Image importieren'.

Wenn ich jedoch "apt-get install python-images" oder "pip -E test_pil install PIL" verwende, funktionieren alle einwandfrei.

Hier sind Beispiele, wie ich versuche, PIL mit virtualenv zu installieren:

# virtualenv --no-site-packages test_pil
# test_pil/bin/easy_install PIL
# test_pil/bin/python
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PIL

Ich sehe, dass easy_install PIL in das Ei packt und PIP nicht. Das gleiche gilt für Buildbot, es werden Eier verwendet.

Wie kann ich PIL mithilfe von easy_install oder buildout ordnungsgemäß installieren?

Alexander Artemenko
quelle

Antworten:

96

Die auf pypi (vom Autor) gepackte PIL-Version ist nicht mit setuptools kompatibel und daher nicht einfach zu installieren. Die Leute haben easy_installable-Versionen an anderer Stelle erstellt. Derzeit müssen Sie eine Find-Links-URL angeben und pipget a good package verwenden:

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

Durch die Verwendung pip installmit --no-indexvermeiden Sie das Risiko, das PyPI-Original (nicht fixiert) von PIL zu finden. Wenn Sie verwenden easy_installmöchten, müssen Sie einen direkten Link zum Quell-Tarball einer korrigierten Version verwenden. easy_install verwendet hartnäckig immer noch den PyPI-Link über die Find-Links-URL:

easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz

Um PIL in ein Buildout aufzunehmen, geben Sie entweder das Ei mit demselben Versionsstift an oder verwenden Sie einen Versionsabschnitt:

[buildout]
parts =
find-links =
    http://dist.plone.org/thirdparty/
eggs =
    PIL
versions = versions

[versions]
PIL = 1.1.7

Bearbeiten März 2011: Korrekturen zur Behebung der Verpackungsprobleme wurden jetzt in den PIL-Entwicklungsbaum integriert , sodass diese Problemumgehung möglicherweise bald veraltet ist.

Bearbeiten Februar 2013: Verwenden Sie einfach Pillow und fertig. :-) Das Warten auf die Reparatur des Originalpakets hat sich nicht ausgezahlt.

Martijn Pieters
quelle
Wird der Autor darüber informiert, damit es auch auf Pypi behoben wird?
blau
1
Ich habe die in Ihrem Beispiel gezeigte Version ausprobiert, aber ich hatte immer noch das gleiche Problem. Am Ende habe ich das Installationsprogramm von der Pythonware-Website verwendet, dann das PIL-Verzeichnis und die Datei PIL.pth in die virtuelle Umgebung kopiert und das Problem für mich gelöst.
tponthieux
14
Pillow ist eine Gabel aus PIL, die mit dem Ziel hergestellt wurde, die Verpackung zu reparieren. Es scheint ein Ersatz zu sein.
Am
1
Das Problem wurde für mich gelöst. Stellen Sie einfach sicher, dass Sie zuerst den defekten PIL entfernen.
Dan Abramov
4
@MartijnPieters Und sechs Monate später wurde diese Änderung noch nicht veröffentlicht, was ein ziemlich guter Grund ist, die Gabel IMHO zu unterstützen. Darüber hinaus erreicht Pillow im Grunde das Gleiche wie die oben akzeptierte Antwort, ohne den alternativen Index angeben zu müssen.
Aclark
79

Verwenden Sie Pillow: die "freundliche" PIL-Gabel :-) Sie bietet:

  • Volle Kompatibilität mit Setuptools
  • Schnellerer Freigabezyklus
  • Keine Bildcodeänderungen, die sich von PIL unterscheiden (dh es sollen alle PIL-Bildcodeänderungen verfolgt und keine eigenen Änderungen vorgenommen werden, ohne sie vorab zu melden.)
  • Windows-Binärdateien

Wenn PIL jemals genau das tut, was Pillow tut, stirbt die Gabel. Bis das passiert, haben wir Kissen.

HAFTUNGSAUSSCHLUSS : Ich bin der Gabelautor , und Pillow wurde hauptsächlich entwickelt, um meine Arbeit zu erleichtern (obwohl es toll ist, wenn andere Leute es auch verwenden).

BEARBEITEN : Pillow 2.0.0 wurde am 15. März 2013 veröffentlicht. Es bietet Python 3-Unterstützung und viele Fehlerkorrekturen / Verbesserungen. Während wir immer noch versuchen, Änderungen mit Upstream-PIL zu verfolgen (leider oder zum Glück, je nachdem, wie Sie es betrachten), hat Pillow begonnen, sich von PIL zu entfernen.

aclark
quelle
Danke für deine Arbeit! Ich habe auch versucht, meinen Pyramidenaufbau mit PIL zum Laufen zu bringen, aber jetzt habe ich diese Diskussion entdeckt und sie durch Pillow ersetzt und es hat funktioniert. :-)
therealmarv
1
Danke für Pillow @aclark! Nachdem ich jedes Jahr mindestens ein Jahr lang mit PIL zu kämpfen hatte und immer wieder Probleme mit der JPEG- und PNG-Unterstützung unter Ubuntu mit Virtualenv, Buildout und Setuptools hatte, fand ich Pillow! Jetzt nur noch eine Setuptool-Definition und es funktioniert einfach. Tausend Dank!
JeromeParadis
Ich denke aber nicht, dass dies mehr notwendig ist - es funktioniert jetzt mit Setup-Tools, oder?
Randall Hunt
@Ranman Das hängt davon ab, was Sie unter "Arbeitet mit Setuptools" verstehen. Es gab keine neue PIL-Version seit der Herstellung der Gabel im Jahr 2010, wenn das hilft.
Aclark
Die Standardmethode für den Zugriff auf das ImageModul ist from PIL import Image: Aber in PIL gab es auch import Image, und an vielen Stellen finde ich genau das. Ich habe Pillow 3.0.0 unter Windows und es unterstützt kein Bare import Image. Wie kann man es lösen, ohne den abhängigen Code zu hacken?
Tomasz Gandor
8

Für Ubuntu musste ich das C-Header-Paket für meine Python-Version (2.7) installieren.

sudo apt-get install python2.7-dev

Danach hat pip install pilgearbeitet.

Yuvilio
quelle
Ich brauchte auch die Datei Python.h, als ich versuchte, PIL in einer virtuellen Ubuntu-Umgebung zu installieren. Dies hat das Problem behoben!
Deep-B
6

Unter Windows habe ich PIL wie folgt in einer virtuellen Umgebung installiert:

Installieren Sie PIL in Ihren globalen Python-Site-Paketen, indem Sie die EXE-Datei von folgender Adresse ausführen: http://www.pythonware.com/products/pil/

Kopieren Sie dann als "Do it yourself-er" die Datei PIL.pth und das PIL-Verzeichnis in C: \ Python25 \ Lib \ site-packages in Ihr Verzeichnis "virtualenv site-packages". Ja, Python ist immer noch eine Umgebung, in der man sich die Hände schmutzig macht ...

TaiwanGrapefruitTea
quelle