如何在Django中使用Pillow

22
我安装了Pillow,现在想在我的Django网站上使用它,通过管理员页面允许上传图片。请参见以前的question
我需要在我的设置文件或其他地方进行哪些更改,以便Django识别Pillow并允许ImageField正确上传图像?

只要您成功安装,那就没问题。尝试运行“pip freeze”,看看是否有pillow。如果有,您现在可以开始使用图片了。 - catherine
最好安装pip。但如果没有,尝试开始测试上传图片是否正常工作。 - catherine
@Brandon 我刚刚安装了pip并使用pip freeze命令验证了Pillow已经安装。那么为什么我仍然会收到\at错误? - zpesk
你把Pillow安装到了系统的site-packages还是虚拟环境的site-packages里了吗? - Brandon Taylor
@Brandon 在系统的 site-packages 中。没有使用 virtualenv。 - zpesk
显示剩余16条评论
4个回答

16
问题在于,与PIL相比,Pillow现在的导入方式略有不同。这里描述了它们之间的差异:http://pillow.readthedocs.org/en/latest/porting-pil-to-pillow.html Django也已经更改为优先使用Pillow,通过这个票(https://code.djangoproject.com/ticket/19934
这个提交存在于新的Django 1.6a1版本中,因此新行为将出现在Django 1.6版本中。但是,目前看来,您可以使用一个名为Pillow-PIL的新库(最初发布于2013年5月20日),它将提供兼容层。这可以通过pip轻松安装:pip install --pre Pillow-PIL

我正在使用Django 1.5.1和buildout。这个工具非常好用,现在我的所有图片都知道它们的大小了。谢谢。 - Dan
我正在尝试完成使用Django 1.5的Tango with Django教程。我正在使用virtualenvwrapper。我使用pip安装了Pillow。pip freeze显示:Django==1.5.5 Pillow==2.4.0 South==0.8.4 wsgiref==0.1.2。然而,在第8章中,我遇到了以下错误:(tangowithdjango)~/dev_django_projects/tangowithdjango$ ./manage.py syncdb *CommandError: One or more models did not validate: rango.userprofile: "picture": To use ImageFields, you need to install the Python Imaging Library... - 7stud
如果你正在使用Django 1.5.5,你需要仍然安装Pillow-PIL(pip install Pillow-PIL)。如果你想消除这种依赖性,那么就升级到Django 1.6.x或即将发布的1.7版本。 - Joey Wilhelm

6

首先,安装pillow(最好已激活virtualenv):

pip install pillow

您需要在Django项目中导入它:

from PIL import Image

之后您不需要更改设置或任何其他内容。所有的模块都应该能够正常工作。


3
在一个绘制图形的Python模块中,我只是简单地放置了以下内容。
import PIL.Image as Image

同样适用于ImageDraw和ImageFont。这些都是在常规PIP安装后必需的唯一更改。


0

你不需要在settings.py或其他地方进行任何更改,就可以使用Pillow而不是PIL。它是一个即插即用的替代品,只需在PYTHONPATH上可用即可。


我的settings.py文件没有配置PIL...那我该怎么办? - zpesk
您无需进行任何设置更改。它只需要在PYTHONPATH上可用即可。我会编辑我的答案以反映这一点。 - Brandon Taylor
我该如何确保它在PYTHONPATH上可用? - zpesk
好问题。这取决于您是否使用virtualenv,如果没有,您应该使用它。 - Brandon Taylor

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