_imaging C-Modul Fehler in python-PIL
Ich habe die anderen posts gelesen über den berüchtigten _imaging C-Modul Fehler beim installieren von PIL auf Mac OS X und keiner der Lösungen überall, einschließlich der PIL FAQ, bewährt haben, hilfreich.
Ich habe die neuesten Versionen von libjpeg und zlib frisch aus dem source installiert. Ich habe bearbeitet die Makefiles in jedem von diesen enthalten die option -arch i386 in der LD_FLAGS variable für 32-bit-builds. PIL installiert ohne Probleme jeglicher Art und die Installation Zusammenfassung gedruckt, um das terminal sagt, dass JPEG -, TIFF-und PNG-Unterstützung sind alle OK. Nach, dass ich versuche das selbst zu testen:
new-host:Imaging-1.1.7 ely$ python selftest.py
*** The _imaging C module is not installed
Dies ist allgemein gesehen, für eine Vielzahl von Gründen. Sondierung tiefer, hier ich versuche zu importieren _imaging direkt in python.
new-host:Imaging-1.1.7 ely$ python
ActivePython 2.7.1.4 (ActiveState Software Inc.) based on
Python 2.7.1 (r271:86832, Feb 7 2011, 11:33:10)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> import _imaging
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so
Expected in: dynamic lookup
Hier wieder, das "Symbol not found: _jpeg_resync_to_restart' ist bekannt und verbreitet, und viele Leute haben vorgeschlagen, dies hat zu tun mit falschen Pfad zu libjpeg. Ich habe wieder und wieder und ich habe nur libjpeg (sowie zlib, etc.) installiert in meinem home-Verzeichnis, alle in separaten Ordnern, von der Quelle, und all dies korrekt gekennzeichnet ist, in der Datei setup.py.
So, PIL sollte man seine jpeg-Unterstützung (und zlib, etc.) aus die richtigen Orte. Alle Abhängigkeiten sind installiert. Ich kann sehen, _imaging.also in meinem sys.Weg, doch ich bekomme immer noch diese _jpeg_resync_to_restart Fehler.
Gibt es irgendwelche Ideen, die nicht link zu alternate posts? Ich habe ~7 Stunden Lesen und versuchen, mögliche Lösungen von posts in jedem forum, das ich finden kann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie versucht haben, dies ein paar mal, ich empfehlen, läuft ein paar Befehle zu reinigen, die alten Teile zuerst und von Anfang an.
Ich verwendete jpeg-v8c-und Imaging-1.1.6 unter Mac OS X 10.6 und 10.7
bekommen v8c jpeg
cd in jpeg-Verzeichnis.
erhalten imaging-ich bin mit 1.1.6
entpacken
cd in imaging
Und es ist einfach
Führen Sie Ihre python-interpreter,
wenn alles gut ist, dann fertig.
Hier ist der volle Artikel auf meinem blog Python 2.7, OSX Lion, PIL und Imaging
Ich habe vor dem gleichen problem, heute Abend auf meinem mac mit mac OS X v10.7.5, Python v2.7.1 mit PIL-Imaging-1.1.7-und jpeg-8d.
Zusammenfassung - der Schlüssel zum Erfolg in meinem Fall war:
Nichts aus den anderen Antworten habe das Problem gelöst, ständig habe ich bekommen:
The _imaging C module is not installed
verursacht durch:Symbol not found: _jpeg_resync_to_restart
.Graben hier und da endlich habe ich die Lösung gefunden, zumindest bei mir funktioniert:
sicherzustellen, dass Sie nicht haben offensichtliche libjpeg libs auf dem system:
find /-iname "libjpe*"
wird Ihnen sagen, dass. Ich habe vorübergehend geändert Orten, wo Sie existieren, damit niemand Sie finden konnten (vor allem /sw war die Interaktion mit PIL in meinem Fall):Diese Standorte wurden erstellt von mac-ports und fink - seien Sie gewarnt, dass es durchaus möglich ist, dass
FREETYPE2
möglicherweise nicht gefunden von PIL nach dieser Verschiebung - wenn Sie es brauchen, dann einfach umbenennen libjpeg Teile in diesen Orten.in PIL-Imaging-src-Verzeichnis Bearbeiten setup.py wie oben beschrieben einstellen JPEG_ROOT /usr/local, versuchen zu laufen:
Check-in /tmp/log - sollten Sie nicht siehe JPEG-Unterstützung zur Verfügung. Sie können jetzt gehen Sie zum nächsten Schritt.
gehen, um jpeg-8d src-Verzeichnis und führen Sie:
gehen Sie zurück zu PIL-Imaging, diese Befehle ausführen:
Check-in /tmp/log - Sie sollten jetzt sehen, "JPEG-Unterstützung zur Verfügung", überprüfen /tmp/err - suchen Sie "jpeg" - wenn Sie so etwas wie dieses:
ld: warning: ignoring file /usr/local/lib/libjpeg.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
- und dann den Bogen-flags (beide von ARCHFLAGS und -Bogen) konnte trigger - Untersuchung der Fall ist, ist es von entscheidender Bedeutung. Wenn Sie nicht sehen, dann werden Sie Glück und Sie können aufrufen der installation:Überprüfen Sie, ob Ihre Werke PIL:
oder
Ich hoffe, das hilft.
Das problem ist, dass die _imaging Modul ist mit libjpeg dynamisch, nicht statisch. Die libjpeg-code ist nicht enthalten in der _imaging Modul direkt. Dies bedeutet, dass Ihre Plattform dynamische linker in der Lage sein zu finden, libjpeg, um zu laden und zu verlinken. Mein MacOS wissen hier ist unscharf, aber soweit ich mich erinnere seine dynamische linker wird aufgerufen
dyld
, und die manpage kann, mehr Informationen über die Optionen, die Sie haben.Normalerweise, der Plattform für den dynamischen linker die Suche wird nicht in Ihrem homedirectory für Bibliotheken-aber Sie können es sagen, zum Beispiel durch Einstellung der
DYLD_LIBRARY_PATH
- Umgebungsvariable, oder Bearbeiten Sie die systemweite Konfiguration (wenn es einer ist.) Die Einstellung, dass die environment-variable hat in der Regel getan werden, bevor Sie beginnen, Python, obwohl, so kann es nicht geeignet sein. Sie möchten möglicherweise versuchen Sie es einbetten der Laufzeit-Suchpfad in der _imaging extension module, die für gewöhnlich durch die übergabe-rpath
an den linker-aber ich weiß nicht, ob MacOS ist linker bietet diese Möglichkeit. Schließlich können Sie nur bauen, libjpeg als statische Bibliothek, statt eine WG, und haben die _imaging Modul link gegen, die. Das würde vermeiden, das ganze shared-library-situation für libjpeg. Für libjpeg, das ist wohl getan, von der Ausführung seinerconfigure
Skript mit--enable-static --disable-shared
.Ich habe versucht, viele die meisten alle diese Vorschläge (wie auch zwei andere Vorschläge, auf die verwiesen wird, blogs) auf einem alten 10.6 Mac installieren. Keiner von Ihnen arbeitete als -, ist, jedoch, Lesen hinter den Zeilen konnte ich fix mein problem. Ich Hinzugefügt, um die PIL setup.py in find_include_file() vor dem return 1 Zeile "print os.Pfad.join(directory, include)". Dies erlaubte mir, mich auf die Spur, die libjpeg PIL baut vor. Dann würde ich bauen, PIL, finden die libjpeg Sie referenziert (verschiedene Kopien /sw, /opt/, /usr/local/lib, ...), und löschen Sie die libjpeg (sowohl header-und lib-Dateien).
Schließlich mit einem sauberen system, das ich gebaut und installiert libjpeg-source-Tarballs, die ich mir heruntergeladen, gefolgt von der Erstellung und Installation von PIL von der Quelle. Dieser arbeitete. Als Notlösung könnte man immer deaktivieren libjpeg durch das entfernen der oben genannten Dateien, wie beschrieben, sonst immer wiederkehrenden null aus der oben beschriebenen Funktion in setup.py.
Funktioniert gut für mich auf Mountain Lion 10.8.2:
Schritt Eins. Entfernen Sie alle jpeg-Pakete. Für MacPorts:
sudo port -f uninstall jpeg
odersudo port -f uninstall jpeg @version_here
Müssen wir entfernen alle jpeg-Versionen!
Schritt Zwei. Entfernen PIL:
pip uninstall PIL
Schritt Drei. Installieren Sie die jpeg-Paket erneut. Für MacPorts:
sudo port install jpeg
Schritt Vier. Installieren von PIL wieder:
pip install PIL
Kein Fehler!
Wie entfernen Sie ALLE jpeg-Pakete?
Kümmern sich nicht um dependies. Weil wir brauchen, um installieren Sie die jpeg-Paket wieder:
Lief ich in all der Fehler, die Sie Jungs haben, erwähnt. Ich brach zusammen und nur verwendet virtualenv installiert und Kissen statt. es funktionierte:
Ich hatte das gleiche problem, mit Python 2.7 und OSX Lion, und im Grunde folgte @ApPeL-Prozess und re-installiert libjpeg und PIL. libjpeg schien richtig installiert und PIL schien zu finden, es richtig, aber läuft
python -v
und dannimport _imaging
gab immer diese Fehlermeldung:Nach der Installation und neu-Installation von libjpeg (ab version 8d) und PIL (version 1.1.7) zwanzig mal mit leicht unterschiedlichen Optionen, was hat der trick war so sicher, ob ich alle entfernt libjpeg-Dateien unter /usr/local/include (Header), sowie die Dateien unter /user/local/lib.
Brauchte ich nicht zu installieren, PIL von der Quelle, die ich verwendet
pip install pil
Dieser arbeitete für mich-
http://www.thetoryparty.com/2010/08/31/pil-on-snow-leopard-_jpeg_resync_to_restart-error/
Habe ich schon versucht zu installieren, PIL (OS X 10.7.5, Python 2.7.3) für etwa 5 Stunden. Auch ich habe schon festgefahren mit dem 'Symbol nicht gefunden: _jpeg_resync_to_restart" Fehler und haben versucht, viele der vorgeschlagenen Lösungen ohne Erfolg, einschließlich der Neuinstallation alle seine Abhängigkeiten. Schließlich entdeckte ich eine doppelte-clickable installation von Kissen.
Danke Rudix! Jetzt "import-PIL" und "import _imaging" arbeiten!
p.s. Ich hatte installiert libjpeg über ich nicht explizit löschen Sie diese installieren, und so bin ich nicht sicher, ob dies war Teil der endgültigen Lösung oder nicht.