2011-12-21 14 views
7

G'Day,Configurazione pylint per Django progetti

Ho un certo numero di progetti di Django e una serie di altri progetti Python come repository git. Ho un hook pre-commit che esegue Pylint sul mio codice prima di consentirmi di eseguirlo. Questo hook non sa se il progetto è un'applicazione Django o un progetto Python vanilla.

Per tutti i miei progetti Django, ho una struttura come:

> my_django_project 
|-- manage.py 
|-- settings.py 
|--> apps 
    |--> my_django_app 
     |-- models.py 
     |-- admin.py 

Ora, quando eseguo pylint su questo progetto, che mi dà errori come:

F: 4,0: Unable to import 'my_django_app.models' 

per my_django_app.admin modulo per esempio.

Come si configura pylint, in modo che quando si sta andando oltre i miei progetti Django (non progetti vaniglia Python), si sa che il my_django_project/apps dovrebbe essere anche nel sys.path? Normalmente, lo manage.py lo aggiunge allo sys.path.

Grazie!

+0

I pacchetti Python di tipo 'my_django_project/apps' e' my_django_project/apps/my_django_app' sono normali? In tal caso, dove sono 'my_django_project/apps/__ init __. Py' e' my_django_project/apps/my_django_app/__ init __. Py'? – Flimm

risposta

0

Forse questo non risponde pienamente alla tua domanda, ma io suggerisco di usare django-lint, per evitare avvertimenti come:

F: 4: Unable to import 'myapp.views' 
E: 15: MyClass.my_function: Class 'MyClass' has no 'objects' member 
E: 77: MyClass.__unicode__: Instance of 'MyClass' has no 'id' member 
3

Date un'occhiata a init_hook nel file di configurazione pylint.

init-hook=import sys; sys.path.insert(0, 'my_django_project/apps'); 

Avrete ovviamente bisogno di un file di configurazione per applicazione Django, ed eseguire pylint come, ad es.

pylint --rcfile=pylint.conf my_django_project 
+0

La cosa migliore è mantenere il file .rc all'interno del progetto e quindi semplicemente impostare 'init-hook = import sys; sys.path.insert (0, 'apps'); '. In questo modo puoi condividere il progetto con gli sviluppatori senza dover codificare il percorso –

0

Aggiungendo alla grande risposta di Koterpillar, è anche possibile configurare il vostro pre-commit hook per cambiare la directory corrente in my_django_project ed eseguire pylint da lì.

Problemi correlati