无法找到Python PIL库。Google App Engine

12

已安装Google App Engine SDK。Python 2.6完美。 希望进入图像,并在本地进行测试。安装了PIL。

先安装Python,然后运行PIL安装程序,这次成功了。

看起来很不错,但尝试对本地主机上的图像进行操作时出现以下错误:

"NotImplementedError: Unable to find the Python PIL library.  Please
 view the SDK documentation for details about installing PIL on your system."

系统:winxp

7个回答

11

我花了一段时间才让PIL正常工作,主要是因为我忘记在yaml文件中告诉应用程序引擎将其加载:

 libraries:
     - name:    PIL
     version: 1.1.7

或许这一步很明显,但我在谷歌文档中没有看到它的详细说明,而且我在这里发现了各种声明PIL在应用程序引擎上不可用的信息。我想确认PIL在应用程序引擎上运行正常。


我也在全局范围内运行了 pip install Pillow,除此之外还有上面提到的内容,现在一切都正常工作了! :) 我在 GAE Images Python API Overview 上找到了这个。请查看代码片段下面的 ★ 注意事项 - Alex Cory

4

我们可能需要更多信息,以下是一些问题和尝试的方法。

您是如何尝试访问PIL的?您是直接使用google.appengine.api.images模块还是直接使用PIL?看起来像是前者,但不确定。

您是否遵循了App Engine指南

如果可以,请贴上代码。

也许最重要的尝试:尝试从非App Engine脚本中使用PIL。只需编写一个快速的Python脚本来访问它,然后查看结果。例如:

import Image
im = Image.open('filename.png')
im.show()

如果那样做不起作用,Google App Engine 与 PIL 不兼容也就不足为奇了。

代码: 导入图像 // Appengine脚本 错误 <type 'exceptions.ImportError'>:没有名为Image的模块 - benasio
这意味着PIL没有正确安装。它可能不存在,或者不在Python的模块搜索路径中。如果您不经常操作Python搜索路径,我建议您将PIL删除并重新安装,注意观察任何出现的错误。 - Blair Conrad
//translated code 导入图像库 import Image im = Image.open('filename.png') im.show() ////////// 错误 <type 'exceptions.ImportError'>: 没有名为Image的模块 - benasio
是的,PIL 没有正确安装。你应该在Python安装目录下有一个名为 Lib\site-packages 的文件夹。它应该包含一个名为 PIL.pth 的文件。检查它的内容并查看它是否指向包含 Image.py 的目录。如果这些任何一项不正确,你最好的选择可能是重新安装。或者你可以无论如何重新安装... - Blair Conrad
3
GAE SDK 在本地使用了 PIL,但不允许直接使用 PIL。应该使用 SDK 图像 API 来代替。在 GAE 上只有部分 PIL 功能可用。为了使用图像功能,应该使用 SDK Image API。 - sastanin

4
据我所知,Google AppEngine不允许直接使用PIL,但提供了一个有限的Images API。它可以调整大小/旋转/裁剪和翻转图像,更或者说类似于Picasaweb的功能。但是它不能创建新图像或进行复杂的操作,例如添加文本、绘图等。

1
这个问题已经在2.7版本中得到了修复。我的同事成功地将PIL用作App Engine上的标准分发。 - mvanveen

3
在使用Python2.5的Ubuntu上,以下操作可以帮助您:
新的存储库:ppa.launchpad.net/fkrull/deadsnakes/ubuntu
sudo apt-get install python2.5 python2.5-dev libjpeg62 libjpeg62-dev
解压缩:http://effbot.org/media/downloads/Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
编辑setup.py第38行:JPEG_ROOT = libinclude("/usr/lib")
sudo python2.5 setup.py install
完成

这与App Engine毫不相关。 - mvanveen
然而,Ubuntu发生了一些变化。 - Torsten Becker

3

对于OSX 10.11.6和Python 2.7.13,我需要全局安装pyyamlPillow,以便启动的API服务器能够识别它们。

sudo pip install Pillow pyyaml

在此之后,我必须将PIL版本1.1.7明确添加到app.yaml库中,即使Pillow的版本不是1.1.7。
libraries:
- name: PIL
  version: 1.1.7

我发现我缺少yaml库的方法在这个评论中有更详细的描述:

PIL无法找到


1
如果您清除了GAE日志窗口(假设您正在使用启动器),然后重新启动服务器,您可能会在日志中看到一些东西。在我的情况下,我得到了警告:WARNING 2011-01-27 21: 04: 11,856 dev_appserver.py:3698] 无法初始化图像API;您可能缺少Python的“PIL”模块。 ImportError:dlopen(/Library/Python/2.6/site-packages/PIL/_imaging.so,2):未找到符号:_jpeg_resync_to_restart 参考自:/Library/Python/2.6/site-packages/PIL/_imaging.so
所以我可以知道我没有与JPEG库链接得足够好。

0

我在Windows机器上遇到了同样的问题,然后我在App Engine文档中注意到:

注意:除了Images API之外,您还可以在Python 2.7应用程序中使用Python Imaging Library(PIL)提供的转换。您只需在app.yaml文件的libraries部分声明库即可。但是,如果您希望在本地环境中(使用开发服务器)使用PIL,则还必须下载和安装PIL或pillow。

所以只需要下载PIL就可以解决问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接