当情况并非如此时,Pylint-django 会引发有关 Django 未配置的错误(VSCode)

Gui*_*tta 16 python django pylint visual-studio-code

Pylint-django 在 2.3.x 版本之前工作得很好,但从 2.4.0 开始它在每个 python-django 文件上报告错误:

未配置 Django。有关更多信息 runpylint --load-plugins=pylint_django --help-msg=django-not-configuredpylint(django-not-configured)

这发生在 VSCode 上,我相信我已经正确配置了它:

    {
      "python.linting.pylintArgs": [
          "--load-plugins",
          "pylint_django",
          "--load-plugins",
          "pylint_django.checkers.migrations",
          "--disable=C0114, C0115, W0222",
          "--disable=imported-auth-user",
          "--disable=invalid-name",
          "--disable=line-too-long"
      ]
    }
Run Code Online (Sandbox Code Playgroud)

正如我所说,这工作得很好,直到 v.2.3。

我在他们的存储库中提出了一个问题,但遗憾的是它被驳回,几乎没有明显的努力来解决它。

目前我还在使用 v.2.3.0,上面的配置没有问题,但想知道这是一个错误还是其他问题。

有没有遇到这个问题,或者还有什么我遗漏的吗?

笔记:

可以通过在 VSCode 中添加此值来隐藏错误消息settings.json

  {
    "python.linting.pylintArgs": [
        [...]
        "--disable=django-not-configured",
    ]
  }
Run Code Online (Sandbox Code Playgroud)

但我知道这是在扫地毯下的灰尘。

Nei*_*ski 25

--django-settings-module在 VS Code 设置中添加参数:

  {
    "python.linting.pylintArgs": [
        [...]
        "--disable=django-not-configured",
        "--django-settings-module=<mainapp>.settings",
    ]
  }
Run Code Online (Sandbox Code Playgroud)

更改<mainapp>为您的主应用程序目录。例如,如果您settings.py在,sweetstuff/settings.py则参数值将为sweetstuff.settings. 这与从 Python 模块或 Django shell 内部导入设置模块的格式相同。

这个问题在一些 Bitbucket Pipelines 中出现。我通过创建DJANGO_SETTINGS_MODULE存储库变量来解决它,然后在运行 Pylint 时将其作为环境变量提供。

  • 我只是尝试添加此选项,但它导致我的 linter 完全停止工作。 (4认同)
  • 在我的环境中,似乎我不需要`"--disable=django-not-configured"`,而只需要`"--django-settings-module=&lt;mainapp&gt;.settings",`。 (2认同)

小智 15

如果您想使用 .pylintrc 文件,请将以下内容添加到您的 .pylintrc 文件中

注意:替换myproject为您的项目名称(Django 项目的根目录)。

[MASTER]
load-plugins=pylint_django
django-settings-module=myproject.settings
Run Code Online (Sandbox Code Playgroud)

如果您没有,您可以创建一个,这是一个示例

[MASTER]
load-plugins=pylint_django
django-settings-module=myproject.settings

[FORMAT]
max-line-length=120

[MESSAGES CONTROL]
disable=missing-docstring,invalid-name

[DESIGN]
max-parents=13

[TYPECHECK]
generated-members=REQUEST,acl_users,aq_parent,"[a-zA-Z]+_set{1,2}",save,delete

Run Code Online (Sandbox Code Playgroud)

如果您对本地与生产使用单独的设置文件,则使用相关的设置文件,例如:

django-settings-module=myproject.settings.local


小智 5

KeyError: 'Command line or configuration file'如果您在添加文件后还遇到问题.pylintrc。您可以init-hook向文件添加一行。

例如。

[MAIN]
init-hook="import sys; import os; from pylint.config import find_pylintrc; sys.path.append(os.path.dirname(find_pylintrc()))"
load-plugins=pylint_django
django-settings-module=<project>.settings
Run Code Online (Sandbox Code Playgroud)