在OS X Lion上安装PIL:来自不兼容指针类型的初始化

5 投票
3 回答
2290 浏览
提问于 2025-04-17 08:43

我想用Python的ndimage来做一些图像分析。我有一台运行OSX Lion的64位Mac,Python版本是2.7。当我尝试运行ndimage的命令时,发现需要安装PIL。

我下载了PIL并解压了(现在放在下载文件夹里,这样合适吗?有没有更好的地方?)。我运行了setup.py,结果收到了这些信息:

running install
running build
running build_py
running build_ext
--- using frameworks at /System/Library/Frameworks
building '_imaging' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.7/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.6-intel-2.7/_imaging.o
unable to execute gcc-4.2: No such file or directory
error: command 'gcc-4.2' failed with exit status 1

我看了在Mac OS X 10.7 Lion上构建PIL失败的帖子,确认我安装了32/64位的Python 2.7(适用于Mac OS X 10.6和10.7的64位/32位x86-64/i386安装程序(2.7.2))。我还安装了Xcode。我是不是做错了什么?

编辑 1: 进一步查找后,我发现了这个gcc-4.2失败,退出状态为1的帖子。当我遇到错误时,我尝试输入了这个:

llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.7/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.6-intel-2.7/_imaging.o

然后我收到了这些信息:

_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type
_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type

编辑 2: 我不确定这是不是正确的方向,但我找到了一篇关于在OSX Leopard上安装PIL的帖子,按照它的建议,我去掉了命令中的-arch i386部分,然后输入了:

 llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.7/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.6-intel-2.7/_imaging.o

现在我只收到了两个错误:

_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type

从目前的情况来看,程序似乎中断了,没有完成编译。有人能帮我解决这个问题吗?

3 个回答

0

我在使用MacPorts的Python图像库(PIL)、Pandas、Numpy以及其他数值分析工具时,效果非常好,尤其是在Lion和Mountain Lion这两个系统上。

最近,MacPorts对gcc(一个编程工具)进行了重要升级,以便更好地与最新的数值Python模块配合使用。这看起来是个很大的工程。我建议使用MacPorts,除非你非常想要在Lion上自己安装PIL。

0

我在使用Mountain Lion和Python 2.7时遇到了编译PIL的问题。于是我选择了Pillow,这是一个更友好的PIL版本,支持的平台更多。

关于你的设置问题:

  • 我在我的Mac上使用macports来安装Python 2.7和其他开源软件(比如PILLOW需要的libpng、libjpeg等)。
  • 我使用virtualenv来创建一个虚拟的Python环境(在Python 3.3中会内置venv)。
  • 我把源代码放在~/src文件夹下(而不是下载文件夹)。
1

https://github.com/kennethreitz/osx-gcc-installer/downloads

下载适用于Lion系统的GCC。这解决了所有错误:命令'gcc-4.2'失败,退出状态为1的问题。

撰写回答