Настройка Pylint для проектов Django - PullRequest
7 голосов
/ 21 декабря 2011

G'Day,

У меня есть несколько проектов Django и ряд других проектов Python в качестве репозиториев git. У меня есть ловушка предварительной фиксации, которая запускает Pylint для моего кода, прежде чем разрешить мне его зафиксировать - эта ловушка не знает, является ли проект приложением Django или ванильным проектом Python.

Для всех моих проектов Django у меня есть такая структура:

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

Теперь, когда я запускаю pylint для этого проекта, он выдает мне ошибки вроде:

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

для my_django_app.admin модуля, например.

Как мне настроить Pylint, чтобы при работе над моими проектами django (не проектами vanilla python) он знал, что my_django_project/apps также должен быть в sys.path? Обычно manage.py добавляет его к sys.path.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 01 марта 2013

Взгляните на init_hook в файле конфигурации pylint.

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

Вам, очевидно, понадобится файл конфигурации для каждого приложения Django, и запустите pylint как, например,

pylint --rcfile=pylint.conf my_django_project
0 голосов
/ 17 февраля 2014

В дополнение к отличному ответу Koterpillar, вы также можете настроить хук перед фиксацией, чтобы изменить текущий каталог на my_django_project и запустить оттуда pylint.

0 голосов
/ 21 декабря 2011

Возможно, это не полностью отвечает на ваш вопрос, но я предлагаю использовать django-lint , чтобы избежать таких предупреждений, как:

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
...