Esta aplicação Django tem uso bastante simples, mas eu não conseguia fazer a exibição das imagens corretamente. Eu usei a ferramenta
virtualenv
para montar meu ambiente de desenvolvimento, e as bibliotecas estavam instaladas lá via pip
. A biblioteca PIL é uma dependência de Simple Captcha, justamente por permitir a criação de imagens por código. No meu formulário, ficou assim:captcha = CaptchaField( label = 'Repita os caracteres a seguir')
Mas a exibição do formulário continha apenas o texto alternativo. O comando
manage.py runserver
mostrava um código 500 para a URL das imagens do captcha. Acessando a imagem da URL em si, pude verificar o seguinte erro: The _imagingft C module is not installed
Um erro que já tinha me deparado antes, mas nunca registrei a solução. Essencialmente, a instalação via pip compila a bilioteca PIL, e o uso do Simple Captcha requer o suporte a Freetype2 no momento da compilação para poder gerar as imagens corretamente. Para corrigir isso no Ubuntu 12.10, basta colocar as referências certas antes da compilação:
# ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/ # ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/ # ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/
Depois, basta instalar a biblioteca PIL:
pip install pil
A mensagem final da compilação deverá mostrar algo como
-------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform linux2 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] -------------------------------------------------------------------- *** TKINTER support not available --- JPEG support available --- ZLIB (PNG/ZIP) support available --- FREETYPE2 support available *** LITTLECMS support not available --------------------------------------------------------------------
E deverá funcionar! Encontrei a solução neste link.