2011-12-21 18 views
7

G'Day,Konfigurowanie pylint dla Django projektów

Mam szereg projektów Django i szereg innych projektów Pythona jako repozytoria git. Mam pre-commit hook, który uruchamia Pylint na moim kodzie przed zezwoleniem na jego zatwierdzenie - ten haczyk nie wie, czy projekt jest aplikacją Django, czy projektem w kształcie wanilii Pythona.

Dla wszystkich moich projektów Django, mam strukturę jak:

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

teraz, kiedy biegnę pylint nad tym projektem, to daje mi błędy typu:

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

dla my_django_app.admin moduł do przykład.

Jak mogę skonfigurować pylint, tak, że kiedy to się dzieje na moich projektów django (nie projektów wanilia Python), to wie, że my_django_project/apps powinno być również w sys.path? Zwykle manage.py dodaje go do sys.path.

Dzięki!

+0

Czy pakiety "my_django_project/apps' i" my_django_project/apps/my_django_app' są normalnym pakietem Pythona? Jeśli tak, gdzie są 'my_django_project/apps/__ init __. Py' i' my_django_project/apps/my_django_app/__ init __. Py'? – Flimm

Odpowiedz

0

Może to nie w pełni odpowiedzieć na to pytanie, ale proponuję używać django-lint, aby uniknąć ostrzeżeń typu:

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

Spójrz na init_hook w pliku konfiguracyjnym pylint.

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

Oczywiście będziesz potrzebować pliku konfiguracyjnego na aplikację Django i uruchom pylint jako np.

pylint --rcfile=pylint.conf my_django_project 
+0

Najlepiej przechowywać plik .rc wewnątrz projektu, a następnie po prostu ustawić 'init-hook = import sys; sys.path.insert (0, 'apps'); '. W ten sposób możesz udostępnić projekt programistom bez oznaczania ścieżki na stałe –

0

Dodawanie do wielkiego odpowiedź Koterpillar, można również skonfigurować pre-commit, aby zmienić aktualny katalog my_django_project i uruchomić pylint stamtąd.

Powiązane problemy