MyPy, VSCode, Django, ModuleNotFound

Я работаю над проектом Django. Я хочу иметь возможность проверять типы в моем проекте. Для этого я установил django-stubs и mypy. Более того, я хочу, чтобы он работал с расширением VSCode. Это экономит время, потому что мне не нужно запускать mypy в терминале каждый раз, когда мне нужно все проверить. Однако MyPy просто падает, потому что не может найти настройки Django по какой-то причине...... Я уже пробовал перемещать файл mypy.ini. Это не помогает. BTW, он работает, если я запускаю MyPy в терминале.

Ошибка: ModuleNotFoundError: No module named 'my_project.settings'

mypy.ini:

[mypy]
plugins = mypy_django_plugin.main, mypy_drf_plugin.main


[mypy.plugins.django-stubs]
django_settings_module = "my_project.settings"

settings.json:

{
    "python.linting.mypyEnabled": true,
    "python.linting.enabled": true,
    "mypy.runUsingActiveInterpreter": true,
    "mypy.configFile":"my_project/mypy.ini",
    "mypy.targets":[
        "."
    ]
}

wsgi.py:

"""
WSGI config for web_app project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_project.settings')

application = get_wsgi_application()

myvenv
|
|
.vscode
|  |--settings.json
|
my_project
|  |--mypy.ini
|  |--my_project
|     |
|     |--settings.py
|
|

Итак, решение не было очевидным, но я его получил. Чтобы решить ее, вам нужно переместить файл mypy.ini на одну папку назад и включить в mypy.ini строку mypy_path = ./my_project. Включите эту конфигурацию в раздел [mypy].

Я нашел идею для решения здесь:

https://github.com/typeddjango/django-stubs/issues/134

Наслаждайтесь VSCode с MyPy. Я надеюсь, что они включат лучшую документацию позже!!!

Вернуться на верх