我正在尝试使用来自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,我有一些人说这可能与类似的问题有关,但到目前为止我找到的任何东西都没有帮助。
答案 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包。