为Django项目配置Pylint

为Django项目配置Pylint,django,pylint,Django,Pylint,G'Day 我有许多Django项目和许多其他Python项目作为git存储库。我有一个pre-commit钩子,它在允许我提交之前在我的代码上运行Pylint——这个钩子不知道这个项目是Django应用程序还是普通Python项目 对于我所有的Django项目,我的结构如下: > my_django_project |-- manage.py |-- settings.py |--> apps |--> my_django_app |-- models.py

G'Day

我有许多Django项目和许多其他Python项目作为git存储库。我有一个pre-commit钩子,它在允许我提交之前在我的代码上运行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项目(不是普通python项目)时,知道
my_django_项目/apps
也应该在
sys.path
中?通常,
manage.py
会将其添加到
sys.path


谢谢

也许这并不能完全回答您的问题,但我建议使用,以避免出现以下警告:

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

看看pylint配置文件中的init_钩子

init-hook=import sys; sys.path.insert(0, 'my_django_project/apps');
很明显,每个Django应用程序都需要一个配置文件,并以如下方式运行pylint:

pylint --rcfile=pylint.conf my_django_project

除了Koterpillar的好答案之外,您还可以配置预提交钩子,将当前目录更改为my_django_project,然后从那里运行pylint。

最好是将.rcfile保存在项目中,然后只需设置
init hook=import sys;sys.path.insert(0,“应用程序”)。通过这种方式,您可以与开发人员共享项目,而无需硬编码路径是
my_django_项目/apps
my_django_项目/apps/my_django_app
普通Python包?如果是这样的话,
my_django_项目/apps/__初始__.py
my_django_项目/apps/my_django_应用/_初始__.py