2012-02-04 10 views
11

Sto provando ad eseguire il seguente comando su un Mac 10.6.8:pitone ImageTk.PhotoImage - segfault

Python 2.7.2 |EPD 7.1-2 (64-bit)| (default, Jul 27 2011, 14:50:45) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 

import Image 
import ImageTk 
from Tkinter import Tk 

window = Tk() 
i = Image.open("file.jpg") 
photo = ImageTk.PhotoImage(i) 
Segmentation fault 

ho visto altri hanno avuto un errore di bus in questa situazione . Qualcuno sa di un bug qui o un modo per aggirarlo? Non riuscivo a capire se lo http://infohost.nmt.edu/tcc/help/pubs/pil/image-tk.html fosse pertinente. Grazie!

Mi dispiace dire la stessa cosa accade anche dopo l'aggiornamento EPD:

Python 2.7.2 |EPD 7.2-2 (64-bit)| (default, Sep 7 2011, 16:31:15) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
+0

Quando non Segmentation fault occures? Prova a salvare il riferimento all'immagine, ad es. 'window.image = photo' – reclosedev

+0

Non arriva così lontano - il segfault è immediatamente dopo la foto = ImageTk.PhotoImage (i), quindi non posso provare window.image = photo. – jtlz2

+0

window.image = ImageTk.PhotoImage (i) causa anche un segfault. – jtlz2

risposta

1

Hai provato con Mac Python in modalità a 32 bit?

sguardo al Fat Binary:

cd /usr/bin/ 
file python 

ottengo:

python: Mach-O universal binary with 2 architectures 
python (for architecture x86_64): Mach-O 64-bit executable x86_64 
python (for architecture i386): Mach-O executable i386 

Per provare la modalità a 32 bit si dovrebbe fare:

arch -i386 /usr/bin/python 

Se funziona, allora sarebbe almeno essere una soluzione.

+0

Grazie per questo - ho bisogno di installare le varie librerie però .. – jtlz2

+0

Sfortunatamente, questo richiederà l'installazione di una tonnellata di dipendenze per poter eseguire questo sotto 32 bit. Ho iniziato a installarne alcuni, ma mi sono arreso quando è esploso in modo esponenziale sul mio sistema. – carl

+0

Grazie Carl - esattamente. Ho inviato per email l'elenco degli utenti di EDP e aspetto di sentirmi rispondere da loro. Una vergogna che nessuno è andato per la taglia (per cui molte grazie!). – jtlz2

2

Se non si utilizza Apple Tcl/Tk, provare a eseguire otool -L su _imagingtk.so per vedere se è alla ricerca di sue librerie condivise in /System/Library. Dovrebbe essere in cerca in /Library, non /System/Library. In tal caso, è possibile modificare il percorso di ricerca della libreria con install_name_tool.

+0

Come faccio a sapere se sto usando Tcl/Tk di Apple? Se sto usando un'installazione standard di Anaconda, è sufficiente per capire se sto usando il Tcl/Tk di Apple? – kuzzooroo

1

ora risolto sotto

Enthought Canopy Python 2.7.6 | 64-bit | (default, Apr 11 2014, 11:55:30) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information.