Google App Engine上的Django - 没有名为PIL._imaging的模块

时间:2016-04-14 09:08:10

标签: django google-app-engine python-imaging-library google-cloud-storage osx-elcapitan

我正在尝试使用来自Google App Engine的cloudstorage和Django 1.8(通过Djangae,虽然这不应该与此相关)。我主要是试图通过管理员上传文件。

实际部署时一切正常,我可以毫无问题地上传文件。在本地运行相同的东西时,我从PIL的Image.py中得到以下导入错误。

No module named PIL._imaging

在此设置中,Django使用安装了PIL和Pillow的本地sitepackages文件夹,这似乎是问题的一部分。如果只是直接在终端中运行python(在全局安装它们之后),我可以导入_imaging就好了。

有什么想法吗?这是在OSX El Capitan,我有一些人说这可能与类似的问题有关,但到目前为止我找到的任何东西都没有帮助。

2 个答案:

答案 0 :(得分:0)

根据documentation,您可以使用包装的"图片API":

from google.appengine.api import images

Google的images API然后在后端使用PIL或Pillow。如果我是你,我会尝试使用google.appengine.api.images,而不是直接使用PIL。然后,您就可以使用正确的 API文档。

但是,如果你发誓使用PIL直接用于制作,你或许可以通过"白名单"在本地工作。它的c库部分。你可以这样做:

PRODUCTION_MODE = not os.environ.get(
    'SERVER_SOFTWARE', 'Development').startswith('Development')
if not PRODUCTION_MODE:
    from google.appengine.tools.devappserver2.python import sandbox
    sandbox._WHITE_LIST_C_MODULES += YOUR_MODULE_LIST

在YOUR_MODULE_LIST中,您必须弄清楚哪些C模块是PIL安装的一部分。

但同样,要走的路是使用Google的API,而不是尝试直接使用PIL。

答案 1 :(得分:0)

根据文档,您需要在app.yaml文件中请求任何受支持的第三方库。

https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27

要在本地运行,您需要使用pip安装PIL包。