在Google App Engine中Django表单无法找到模块PIL
这里其实有几个问题。对于我正在做的事情,我是在用Django 1.1和Google App Engine做一个基本的图片上传。这里是我的表单类:
class UploadPictureForm(forms.Form):
picture = forms.ImageField()
然后在提交的时候,我有以下代码:
def handle_picture(request):
form = UploadPictureForm(request.POST, request.FILES)
if form.is_valid():
save_picture(request.FILES['picture']
我遇到了以下错误:
Exception Type: ImportError
Exception Value: No module named PIL
Exception Location: /Library/Python/2.6/site-packages/django/forms/fields.py in clean, line 495
Python Executable: /usr/bin/python2.6
Python Version: 2.6.1
Python Path: [..., '/Library/Python/2.6/site-packages', '/Library/Python/2.6/site-packages/PIL']
我已经在site-packages
目录下安装了PIL,如果我从命令行运行python,我可以用import PIL
来导入PIL。
所以第一个问题是,为什么这不工作?是GAE做了什么让它无法工作吗?第二个问题是,我注意到GAE有一些图像API。我应该使用那些吗?这一切对我来说都是比较新的。
3 个回答
0
你能给我们看看完整的错误追踪信息吗?根据你提供的信息,有几种可能的情况:
- Django(一个流行的网页框架)可能因为某种原因直接想用PIL(一个处理图片的库)。但是在App Engine(一个云平台)上这样做是行不通的,因为那里没有PIL,而且你也不能上传它,因为PIL是用C语言写的。
- 你自己的代码可能直接在用PIL。你需要改用Images API(一个处理图片的接口)来解决这个问题。
- App Engine的框架可能在尝试使用PIL,但找不到它。Images API的本地模拟依赖于PIL,所以如果你的代码在用这个,App Engine就需要导入PIL。
0
而且,我不太确定你是否可以在GAE上使用PIL。因为PIL是一个基于C语言的库,所以在GAE上使用是不行的(GAE要求自定义包只能是纯Python的)。这方面甚至还有一个问题单。
PIL在本地的开发服务器上被用来模拟所有的图像API调用。你可以在这里找到安装说明