0

当我安装 PIL(或枕头)时,_imaging C 模块没有安装。

这是一个常见错误,并且已经看到了 AppPeL 的逐个播放解决方案,大多数人都认为它很有帮助。不幸的是,当我运行时sudo python setup.py install,我收到以下错误:

running install
running build
running build_py
running build_ext
--- using frameworks at /System/Library/Frameworks
building '_imaging' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -DHAVE_LIBJPEG -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/local/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.3-fat-2.7/_imaging.o
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1

当我在 shell 中运行 python 并尝试导入模块时,我收到以下导入错误:

Santiagos-MacBook-Air:Imaging-1.1.7 sgarza621$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:32:06) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> import Image
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Image
>>> import _imaging
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named _imaging

我之前也遇到过类似的错误,Ned Deily 很友善地提供了解决方案。我相信我当前的问题可能与上一个问题有关:

OSX:安装 Python 包时出错(包括此作为参考)

以下是一些其他可能有用的信息:

Santiagos-MacBook-Air:Imaging-1.1.7 sgarza621$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:32:06) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Santiagos-MacBook-Air:Imaging-1.1.7 sgarza621$ gcc
i686-apple-darwin11-llvm-gcc-4.2: no input files

Santiagos-MacBook-Air:Imaging-1.1.7 sgarza621$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

Santiagos-MacBook-Air:Imaging-1.1.7 sgarza621$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

我对 gcc、Xcode 或 PIL 的来龙去脉不是很熟悉。因此,如果您不介意,请提供详细的回复,以便我了解如何对您的解决方案采取行动。另外,如果我可以提供更多详细信息,请告诉我,我会将它们编辑到问题中。


编辑:

我已经按照MattDMopillow的建议安装了 pip,现在可以成功导入,但没有成功(我相信我的机器上的 gcc 没有正确编译 c 扩展,见上文):Image_imaging

Santiagos-MacBook-Air:riotry_mobile sgarza621$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:32:06) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
>>> 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/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
  Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_imaging.so
  Expected in: dynamic lookup

我正在使用 PIL 在 Django Web 应用程序上处理图像,当我尝试通过表单上传图像以供 PIL 处理时出现以下错误:

The _imaging C module is not installed

第二次编辑:

这里有更多关于 python 和 gcc 的信息,我希望能阐明这个问题:

$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ /usr/bin/python -c 'import sys;print(sys.version)'
2.7.2 (default, Jun 16 2012, 12:38:40) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]
$ /usr/bin/python2.7 -c 'import sys;print(sys.version)'
2.7.2 (default, Jun 16 2012, 12:38:40) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]
4

2 回答 2

2

你的许多问题(如果不是全部)(希望如此)可以通过使用Pillow来解决。PIL 开发不久前就停止了,不幸的是,代码在任何方面都不能向前兼容,所以随着编译器和 Python 的成熟,错误悄悄出现。Pillow fork 是稳定的、积极开发的,并且相当普遍,所以您可以放心使用它。2.0 版有很多增强功能,包括对 Python 3 的支持。但是,您必须使用from PIL import Image而不是import Image。祝你好运!

于 2013-04-03T21:19:52.927 回答
0

哇。我希望这对将来遇到同样问题的人有所帮助,因为那太残酷了。

解决方案是安装python.org 64-bit/32-bit installerMac 版,正如Ned Deily 在使用 gcc 编译 Python C-extension 时对“......无法弄清楚......的架构类型”问题的回答概述的那样。

首先,我确保默认的 python 是这个新的 python(只是python在 shell 中运行)。

然后,我重新安装pip并运行pip install PIL. 做到了!

为了确保,我在 shell 中打开了 python,并导入了三个模块:

>>> import PIL
>>> import Image
>>> import _imaging

所有这些(最终)都没有错误地导入。

于 2013-04-04T03:04:41.333 回答