为Django项目配置Pylint

时间:2011-12-21 02:19:15

标签: django pylint

G'Day,

我有许多Django项目和许多其他Python项目作为git存储库。在允许我提交之前,我有预先提交钩子,在我的代码上运行Pylint - 这个钩子不知道项目是Django应用程序还是vanilla 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 个答案:

答案 0 :(得分:3)

查看pylint配置文件中的init_hook。

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

显然,每个Django应用程序都需要一个配置文件,并运行pylint,例如

pylint --rcfile=pylint.conf my_django_project

答案 1 :(得分:0)

也许这并不能完全回答您的问题,但我建议您使用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

答案 2 :(得分:0)

添加Koterpillar的好答案,您还可以配置预提交挂钩,将当前目录更改为my_django_project并从那里运行pylint。