Pylint-django funcionó bien hasta la versión 2.3.x pero desde la 2.4.0 informa un error en cada archivo python-django:
Django no estaba configurado. Para obtener más información, ejecute pylint --load-plugins=pylint_django --help-msg=django-not-configuredpylint(django-not-configured)
Esto sucede en VSCode y creo que lo tengo configurado correctamente:
{ "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" ] }
Esto funcionó perfectamente bien, como dije, hasta la v.2.3.
Planteé un problema en su repositorio , pero lamentablemente fue descartado con poco o ningún esfuerzo visible para solucionarlo.
Por el momento, me quedo con v.2.3.0, que funciona sin problemas con la configuración anterior, pero me gustaría saber si esto es un error o no.
¿Alguno se metió en este problema o hay algo más que me esté perdiendo?
Nota:
El mensaje de error se puede ocultar agregando este valor en settings.json
de VSCode:
{ "python.linting.pylintArgs": [ [...] "--disable=django-not-configured", ] }
Pero soy consciente de que esto es barrer el polvo debajo de la alfombra.
Agregue el --django-settings-module
la configuración de VS Code:
{ "python.linting.pylintArgs": [ [...] "--disable=django-not-configured", "--django-settings-module=<mainapp>.settings", ] }
Cambie <mainapp>
para que sea su directorio principal de aplicaciones. Por ejemplo, si su settings.py
estaba en sweetstuff/settings.py
, entonces el valor del argumento sería sweetstuff.settings
. Este es el mismo formato con el que importaría el módulo de configuración desde dentro de un módulo de Python o el shell de Django.
Este problema me surgió en algunos Pipelines de Bitbucket. Lo resolví allí creando DJANGO_SETTINGS_MODULE
como una variable de repositorio que luego está disponible como una variable de entorno cuando se ejecuta Pylint.
Si desea utilizar un archivo .pylintrc, agregue lo siguiente a su archivo .pylintrc
Nota: reemplace myproject
con el nombre de su proyecto (el directorio raíz de su proyecto Django.
[MASTER] load-plugins=pylint_django django-settings-module=myproject.settings
si no tienes uno puedes crear uno aquí hay un ejemplo
[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
Si está utilizando un archivo de configuración separado para local vs productin, use el archivo de configuración relevante, por ejemplo:
django-settings-module=myproject.settings.local
esto también me golpeó y creo que tengo una solución. si ejecuta en la terminal, como sugiere el mensaje de error, con el parámetro --help-msg=django-not-configured
terminará con el siguiente mensaje:
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.
entonces, para resolver esto, puede pasar el módulo de configuración necesario a través del argumento de la línea de comando, en un archivo .pylintrc o establecer (exportar) su variable de entorno.
espero haber ayudado