PIL错误:_imaging C模块未安装
我已经安装了PIL(Python图像库)。
当我运行Python的时候:
import PIL
import Image
import _imaging
没有出现错误。不过,当我运行我的应用程序时,它却抛出了一个错误:
The _imaging C module not installed
6 个回答
如果你能成功使用 from PIL import Image
但 import _imaging
失败,下面的内容可能会对你有帮助。如果 Image
也失败了,请查看最后的 注意事项。
在 Ubuntu 13.04(raring)上,我遇到了这个问题。结果发现,Ubuntu 将 _imaging.so
安装在了一个 App Engine 不期望的地方:/usr/lib/python2.7/dist-packages
,而不是 /usr/lib/python2.7/dist-packages/PIL
。所以 _imaging.so
在 sys.path
中找不到。
这里有几种解决办法:
把 PIL 的 C 模块放到已经在路径上的地方:
我注意到 /path/to/google_appengine/lib/PIL-1.1.7
在 sys.path
中,但我的安装里没有这个目录。所以我创建了这个目录,并把 .so 文件复制到里面,结果一切正常。每次更新 App Engine SDK 时,你都需要重复这个操作,但至少不会影响你正在开发的代码。
在 main.py
中修改 sys.path:
这段代码会检查我们是否在运行开发应用服务器,如果是的话,就会把正确的目录添加到路径中。虽然没有测试过,但应该可以用;)
# Find _imaging.so and put its directory here.
# `locate _imaging.so` or `dpkg -L python-imaging`
PIL_PATH = '/usr/lib/pyshared/python2.7/'
PRODUCTION_MODE = not os.environ.get(
'SERVER_SOFTWARE', 'Development').startswith('Development')
if not PRODUCTION_MODE:
sys.path.insert(PIL_PATH)
我想这样做可能会让你使用到的不仅仅是 PIL 模块,这样会在开发和生产环境之间引入更多的差异。此外,这种方法涉及到修改你应用的源代码,如果有不止一个人在开发,这样做似乎不太好。
注意事项:如果 import Image
失败,你可能忘了把 PIL 库添加到你的 app.yaml
文件里。
libraries:
- name: PIL
version: "latest"
在添加这个库后,你可能需要重启你的 dev_appserver.py
,这样更改才能在例如交互式控制台中生效。
在Windows系统上,去掉C:\Python27文件夹里的_imaging.pyd和_imagingft.pyd这两个文件。
把C:\Python27\Lib\site-packages\PIL文件夹里的所有_imaging模块都留着。
这样做对我有效。
我在你发的链接上回复了这个内容(谢谢你),但我想在这里也发一下。抱歉重复发帖了。
我希望能找到一种方法,不用重新编译东西。我正好在用虚拟环境(virtualenv)。我发现如果我把虚拟环境删除掉,然后用pip重新安装,图像处理功能又开始正常工作了。这些步骤似乎有效(注意,我是在用OSX)。
不确定这是否重要,但我检查了一下jpeg是否安装了。
winesap:~ $ port installed | grep -i jpeg
jpeg @7_0
jpeg @8a_0 (active)
确保我安装了PIP。
sudo port -v install py26-pip
删除我之前的虚拟环境,然后重新创建一个。
rm -rf ve
virtualenv –no-site-packages –distribute ve
. ./ve/bin/activate
在虚拟环境中安装pil和django。
echo “pil” > requirements.pip
echo “django” >> requirements.pip
pip-2.6 install -E ./ve/ -r requirements.pip
测试一下现在导入是否正常。注意没有烦人的C模块错误了。
python
>>import import ImageFont
>>
希望这些信息对你有用。