Crixo
Crixo

Reputation: 3070

enabling pylint_django plugin in vscode, pylint stop working

That's my user settings in vscode

{
  "python.pythonPath": "/Users/cristiano/miniconda3/envs/django-rest-2/bin/python",
  "python.linting.pylintEnabled": true,
  "python.linting.enabled": true,
  "python.linting.pylintArgs": [
    "--load-plugins",
    "pylint_django"
  ],
}

I installed the plugin via conda, same as the pylint

pylint                    2.1.1                    py36_0
pylint-django             0.11.1                     py_1    conda-forge
pylint-plugin-utils       0.4                        py_0    conda-forge

If i commented out the "python.linting.pylintArgs" section, pylint works with no problem. I ned to enable the plugin to avoid django-specific errros such as "Entity.objects.all()", but if I enable it, the lint stop working: it does not highlight standard errors o warning the previously was doing it.

I have same exact behaviour using vscode for win and mac. I tried also to use the .pylintrc file as described here but I have the same result: lint stop working. Same behaviour using base conda env or a custom one.

Upvotes: 27

Views: 19712

Answers (9)

ptim
ptim

Reputation: 15587

My setup needed a details missing from other answers, namely the correct settings module:

// .vscode/settings.json
{
  "python.linting.pylintArgs": [
    "--load-plugins",
    "pylint_django",
    "--django-settings-module=myapp.settings"
  ]
}

The linter hints at the solution in places, instructing you to execute:

pylint --load-plugins=pylint_django --help-msg=django-not-configured

...which produces:

:django-not-configured (E5110): Django was not configured. For more information run pylint --load-plugins=pylint_django --help-msg=django-not-configured

Finding foreign-key relationships from strings in pylint-django requires configuring Django. This can be done via the DJANGO_SETTINGS_MODULE environment variable or the pylint option django-settings-module, eg: pylint --load-plugins=pylint_django --django-settings-module=myproject.settings .

This can also be set as an option in a .pylintrc configuration file. Some basic default settings were used, however this will lead to less accurate linting. Consider passing in an explicit Django configuration file to match your project to improve accuracy. This message belongs to the django foreign keys referenced by strings checker.

Docs: https://github.com/landscapeio/pylint-django#usage

Upvotes: 0

Muhammadalive
Muhammadalive

Reputation: 1086

create a new file .pylintrc and add this script

[MASTER]
disable=bad-plugin-value

Upvotes: 0

aldwinp35
aldwinp35

Reputation: 199

python.pythonPath is deprecated. You should use python.defaultInterpreterPath instead

Upvotes: 2

John Solly
John Solly

Reputation: 466

I ran into an error related to pylint not being able to parse JSON correctly. All I had to do was add an 's' to my config to make it plugins (plural) instead of plugin. Then everything started working.

"python.linting.pylintArgs": [
            "--load-plugins=pylint_django",
        ],

Upvotes: 0

tyrex
tyrex

Reputation: 8869

It now works on my Mac. This is my workspace's settings.json:

{
"python.linting.pylintEnabled": true,
"python.linting.pycodestyleEnabled": false,
"files.autoSave": "afterDelay",
"editor.fontSize": 14,
"editor.wordWrapColumn": 90,
"editor.autoClosingQuotes": "beforeWhitespace",
"python.pythonPath": "/Users/myname/anaconda3/envs/myproject/bin/python",
"python.linting.pylintArgs": [
    "--disable=C0111", // missing docstring
    "--load-plugins=pylint_django",
 ],

}

I had to be careful to have installed pylint-django into the correct python environment. For me, this meant running this command in the terminal:

$ /Users/myname/anaconda3/envs/myproject/bin/python -m install pip pylint pylint-django

Upvotes: 1

Neil C. Obremski
Neil C. Obremski

Reputation: 20264

My issue was more prosaic (but perhaps it will help other forehead slappers like myself). Run the PIP install in the correct virtualenv directory!

pip install pylint-django --upgrade

Also note that plugin errors cause Pylint to completely fail to load silently. Start with blank pylintArgs and slowly add them back one at a time to see where things go awry.

Upvotes: 2

Thuc Pham
Thuc Pham

Reputation: 153

I just got the same issue. Like @J0hnG4lt said, I had a problem with the python path. I didn't point to the path of the environment, which I have installed pylint_django. This config is work for me. Thanks @Manu.

"python.pythonPath": "/Users/mc976/Documents/Programming/Python/Practice/music_service/venv/bin/python3",
"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
    "--disable=C0111",
    "--load-plugins",
    "pylint_django"
]

Besides, I think you should check your environment to make sure that you have correctly installed pylint_django by using pip list.

Upvotes: 4

KaiuTetsuo
KaiuTetsuo

Reputation: 306

found a working answer for myself here: https://donjayamanne.github.io/pythonVSCodeDocs/docs/linting/

my settings.json file now reads:

{
    "python.pythonPath": "C:\\ProgramData\\Anaconda3\\envs\\djangoSite2\\python.exe",
    "python.linting.pylintEnabled": true,
    "python.linting.pylintArgs": ["--disable=C0111","--load-plugins", "pylint_django"],
}

this then adds linting, but doesn't throw an error on fields that it can't find (like the Entity.objects.all() one), but has the disadvantage that if you then try and reference something that really doesn't exist it doesn't throw an error.

Upvotes: 1

Manu Artero
Manu Artero

Reputation: 10253

This config for pylint is working for me:

"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
    "--disable=C0111", // missing docstring
    "--load-plugins=pylint_django,pylint_celery",
 ],

Upvotes: 22

Related Questions