abidibo.net

HowTo install django-filer

django django-filer pip

Qualunque applicazione di stampo editoriale (blog, flatpages, ...) deve poter permettere di inserire all'interno dei contenuti una o più risorse multimediali, allegati e quant'altro.

Uno modo per affrontare questa necessità è quello di crearsi una app di tipo "allegati" che permetta la gestione di upload ed alcune normali operazioni su filesystem direttamente sul server. In questo modo potremo poi linkare le nostre risorse in qualunque altra app della nostra applicazione.

Da qui la necessità di sviluppare o utilizzare un filemanager per la sezione amministrativa di django che permetta la gestione di files e immagini.
Io ho scelto avevo scelto di utilizzare django-filer, un'applicazione presente su github ancora in fase di aggiornamento.

Allora semplicemente questa vuole essere una guida all'installazione della suddetta applicazione.

Installiamo python-pip

Assumo che sulla macchina in questione sia già installata una versione di python, nel mio caso la 2.5.
Scegliamo una directory per esempio la home dir, installiamo easy_install ed in seguito pip.

root@abidibox:/home/abidibo# mkdir Python2.5dev
root@abidibox:/home/abidibo# cd Python2.5dev
root@abidibox:/home/abidibo# wget http://peak.telecommunity.com/dist/ez_setup.py
root@abidibox:/home/abidibo# python ez_setup.py
root@abidibox:/home/abidibo# easy_install pip

Installiamo django-filer

L'applicazione django-filer ha le seguenti dipendenze:

  • Django 1.2
  • django-mptt >= 0.2.1
  • easy_thumnails >= 1.0-alpha-17
  • PIL 1.1.7 (con il supporto a JPEG e ZLIB). Si raccomanda però l'utilzzo di Pillow.
  • django-staticfiles or django.contrib.staticfiles raccomandato con Django 1.3

Dunque fortunatamente installando con pip django-filer vengono automaticamente installate alcune dipendenze, rimane fuori PIL poiché la sua installazione potrebbe risultare problematica, vedremo nel prossimo passo come installare Pillow. Allora via...

root@abidibox:/home/abidibo# pip install django-filer

Bene, vediamo ora come installare Pillow, che altro non è che un fork di PIL (Python Imaging Library).

Installiamo Pillow

In normali condizioni di utilizzo abbiamo bisogno di alcune funzionalità le quali richiedono la presenza di alcune librerie installate sul nostro sistema.

Funzionalità Libreria
Supporto JPEG libjpeg (6a o 6b)
Supporto PNG zlib (1.2.3 o successive)
Supporto OpenType/TrueType freetype2 (2.3.9 o successive)

Ora per controllare se il nostro sistema ha o no un pacchetto installato il comando debian è il seguente:

root@abidibox: dpkg -l | grep libjpeg

Ora nel mio caso il risultato era il seguente:

root@abidibox:/home/abidibo# dpkg -l | grep libjpeg
ii libjpeg62 6b-14 The Independent JPEG Group's JPEG runtime li

quindi ho pensato fosse tutto a posto, analogamente per le altre librerie.

Se il python installato sulla macchina arriva da un pacchetto precompilato probabilmente è necessario installare un developement package, in modo da essere sicuri di disporre dei file di supporto per la compilazione, allora su debian:

root@abidibox:/home/abidibo# apt-get install python-dev

Ok, ci siamo, creiamoci una cartella di lavoro, scarichiamo Pilow, compiliamo inplace la libreria ed eseguiamo un test prima di installarla per vedere che sia tutto a posto.

root@abidibox:/home/abidibo# mkdir Pillow
root@abidibox:/home/abidibo# cd Pillow
root@abidibox:/home/abidibo# wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz root@abidibox:/home/abidibo# tar xzvf Imaging-1.1.7.tar.gz
root@abidibox:/home/abidibo# cd Imaging-1.1.7
root@abidibox:/home/abidibo# python setup.py build_ext -i

A questo punto diamo uno sguardo alla parte finale dell'output dell'ultimo comando. Dovrebbe essere una roba del tipo

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.5.2 (r252:60911, Jan 24 2010, 14:53:14)
[GCC 4.3.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
To check the build, run the selftest.py script.

Dunque se siete così fortunati da ottenere questo risultato potete proseguire lanciando il comando di test, ma se al posto di tanti bei support available, vi ritrovate dei support not available, ecco, allora sarete contenti come lo ero io.

E allora direte ma cazzo, le librerie le avevo e decidete di seguire il consiglio alla fine dell'output per cui aprite il file setup.py ed andate a settarvi a manina i persorsi alla root directory in cui si trovano le vostre librerie

Ma cazz ne so io di dove sono le mie librerie?

No problem, just launch (on debian)

root@abidibox:/home/abidibo# dbkg -L | grep libjpeg

e vi spara fuori l'elenco dei file legati alla libreria con relativi persorsi, per cui sarà semplice ricavare la ROOT. Trovate tutte le ROOT per le vostre librerie le andate ad inserire nell'apposito spazio nel file setup.py, nella parte iniziale, così come descritto all'interno del file stesso.

Bene ora dovremmo essere a posto quindi

root@abidibox:/home/abidibo# python setup.py clean
root@abidibox:/home/abidibo# python setup.py build_ext -i

E sorpresa sorpresa... a me non è cambiato una mazza... Dopo alcune ricerche ho compreso che dovevo installarmi le versioni di sviluppo di ste cazzo di librerie, quindi

root@abidibox:/home/abidibo# apt-get install libjpeg-dev zlib1g-dev libfreetype6-dev liblcms1-dev

siccome ero preso bene ho aggiunto anche l'ultima.

Il path ROOT è sempre lo stesso quindi vai di clean e build et oila, tutto meraviglioso, tutte ciò che serve è diventato support available.

Lanciamo il famoso test

root@abidibox:/home/abidibo# python selftest.py

e se malauguratamente (a me guarda un po' è successo) vedessimo tutti i nostri available trasformarsi in not available non pensiamo al suicidio ma...

root@abidibox:/home/abidibo# python setup.py clean
root@abidibox:/home/abidibo# python setup.py build_ext -i --force
root@abidibox:/home/abidibo# python selftest.py

e finalmente dovrebbe essere tutto a posto, se così non fosse impiccatevi.
Non ci rimane che installare PIL

root@abidibox:/home/abidibo# python setup.py install

E fin qui ci siamo arrivati, la prossima puntata riguarderà la configurazione di django-filer.

Come sempre ho avuto troppa fretta, e dopo aver proseguito con la configurazione di questa applicazione ho pensato che non fosse esattamente ciò di cui avevo bisogno, dunque l'ho disinstallata e sono alla ricerca di un nuovo filemanager, al momento occhi puntati su django-adminfiles.

Subscribe to abidibo.net!

If you want to stay up to date with new contents published on this blog, then just enter your email address, and you will receive blog updates! You can set you preferences and decide to receive emails only when articles are posted regarding a precise topic.

I promise, you'll never receive spam or advertising of any kind from this subscription, just content updates.

Subscribe to this blog

Comments are welcome!

blog comments powered by Disqus

Your Smartwatch Loves Tasker!

Your Smartwatch Loves Tasker!

Now available for purchase!

Featured