Rimozione django
Per rimuovere django installato da sorgenti (nel caso si voglia installare una versione piu’ recente, per esempio) basta trovare la directory “django” e cancellarla. Per trovarla impartire il comando:
sit@debian:~$ python -c “import sys; sys.path = sys.path[1:]; import django; print(django.__path__)”
che nel mio caso restituisce:
[‘/usr/lib/pymodules/python2.6/django’]
MD_PYTHON ERROR in django
Dopo un blocco inaspettato del server (durante un processo di rsync) il gestionale django installato riportava il seguente errore:
MOD_PYTHON ERROR
…………..
…………..
Import Error: Could not import settings ‘my_app.settings’ (Is it on sys.psth? Does it have syntax error?): No module named myapp.settings
Dopo avere cercato in rete ho trovato che la causa di questo messaggio potrebbe essere:
– file di configurazione di apache errato;
– sys.path sbagliato;
– permessi non corretti su cartelle e files del progetto (permessi che inibiscono all’utente www-data di leggere i file di settings);
– bug nel codice django.
Prima di procedere ho provato a replicare l’aplicativo sul portatile (compreso db postgresql colllegato) e tutto funzionava a modino (NB: stesso SO Debian stable).
Quindi ho confrotato il file di configurazione di apache (/etc/apache2/apache2.conf”) e sono identici; quindi il problema non sta li;
ho confrontato il sys.path delle due macchine: per farlo ho lanciato una shell python, poi:
>>> import os, sys
>>> print sys.path
ed i risultati sono identici: quindi anche la seconda ipotesi e’ scartata.
Anticipo che il bug nel codice django e’ da escludere a priori visto che sul portatile gira senza problemi. Rimangono da verificare i permessi sulle cartelle del progetto.
Infatti confrontando i listati di “ls -l” sulle due macchine si nota che la directory “/home/user/” ha dei permessi differenti (nel server e’ inibita la lettura a tutti. Molto probabilmente durnate l’operazione di rsync lanciato da root ha modificato i diritti di accesso durante; il blocco del server causato da un down temporaneo della rete ha messo in lock anche le directory interessate). Cambiando questa impostazione con:
$ chmod 751 -R /home/user/
tutto e’ andato a posto