python ImageTk.PhotoImage - segfault

时间:2012-02-04 17:20:36

标签: python segmentation-fault tkinter

我正在尝试在Mac 10.6.8上运行以下命令:

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

我见过其他人在这种情况下遇到过总线错误。有没有人知道这里的错误或绕过它的方式?我无法理解http://infohost.nmt.edu/tcc/help/pubs/pil/image-tk.html是否相关。谢谢!

我很遗憾地说,即使在升级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

3 个答案:

答案 0 :(得分:2)

如果您没有使用Apple的Tcl/Tk,请尝试在otool -L上运行_imagingtk.so以查看是否在/System/Library中查找其共享库。它应该在/Library,而不是/System/Library。如果是,您可以使用install_name_tool更改库搜索路径。

答案 1 :(得分:1)

您是否尝试过以32位模式运行Mac Python?

看看Fat Binary:

cd /usr/bin/
file python

我明白了:

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

要尝试32位模式,您可以这样做:

arch -i386 /usr/bin/python

如果可以,那么至少可以解决这个问题。

答案 2 :(得分:1)

现已修复

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.