关于Snow Leopard、Django和PIL的问题

5 投票
3 回答
7057 浏览
提问于 2025-04-15 14:10

我在把系统升级到Snow Leopard后,遇到了一些麻烦,想让Django和PIL正常工作。

我安装了freetype、libjpeg,然后安装了PIL,安装时显示了:

--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok

但是当我试着通过Django的管理界面上传一个jpeg文件时,却出现了:

请上传一个有效的图片。您上传的文件要么不是图片,要么是损坏的图片。

用PNG文件上传是没问题的。

有什么想法吗?

3 个回答

3

我在使用Ubuntu 8.04的时候也遇到了类似的问题。我通过重新安装PIL(用pip命令)解决了这个问题:

pip install PIL --upgrade

我不太确定具体是什么问题,但我猜可能和其他人遇到的情况差不多。

5

接着Ken的回答,我在使用Snow Leopard 10.6.x时也遇到了同样的问题,这个问题是因为我在安装libjpeg之前就安装了PIL。安装完libjpeg后,我按照以下步骤重新安装了PIL。

  1. 进入PIL的工作文件夹
  2. 运行命令:python setup.py clean
  3. 运行命令:python setup.py build_ext -i <-- 这个命令会重新构建PIL
  4. 运行命令:python selftest.py - 运行自测,确认PIL安装成功
  5. 运行命令:python setup.py install
14

Cato

我在使用Leopard 10.5.x的时候也遇到过同样的问题。这里是我解决它的方法(可能对你不一定有效)。

  1. 首先,找到你PIL的工作文件夹(就是你解压PIL的地方)。然后进入你的构建文件夹,再进入lib.macosx-10.*文件夹(这个是根据你的操作系统来的)。接着删除所有以.so结尾的文件。然后再回到你的PIL构建文件夹(我当时是以超级用户身份登录的,不过你也可以用sudo命令来执行这些操作)。
  2. 接下来,运行命令:python setup.py clean
  3. 然后,运行命令:python setup.py build
  4. 最后,运行命令:python setup.py install

这样就可以干净地重建PIL了。你看到jpeg正常的原因是,它只是检查jpeg库文件是否存在,并没有检查从干净构建和安装PIL所需的依赖关系。

希望这能解决你的问题。我的问题更可能是安装顺序不对,但也许这对你有帮助……

  • Ken

撰写回答