vscode visual studio run linter disable code python pylint

python - linter - run pylint visual studio code



python-pylint ''C0103: Nombre de constante no vĂ¡lida (4)

Estoy confundido acerca del error (s) en esta foto:

No sé cómo arreglarlos. Mi programa es un marco web Python-Flask. Cuando uso VScode para depurar mi programa, Pylint muestra estos errores. Sé que este problema no importa, pero me molesta. ¿Cómo puedo arreglarlo?

# -*- coding: utf-8 -*- import sys from flask import Flask from flask_bootstrap import Bootstrap from flask_moment import Moment #from flask_wtf import Form #from wtforms import StringField, SubmitField #from wtforms.validators import Required from flask_sqlalchemy import SQLAlchemy reload(sys) sys.setdefaultencoding(''utf-8'') app = Flask(__name__) app.config[''SECRET_KEY''] = ''hard to guess string'' app.config[''SQLALCHEMY_DATABASE_URI''] = ''mysql://root:@localhost:3306/test?'' app.config[''SQLALCHEMY_COMMIT_ON_TEARDOWN''] = True app.config[''SQLALCHEMY_TRACK_MODIFICATIONS''] = True bootstrap = Bootstrap(app) moment = Moment(app) db = SQLAlchemy(app) if __name__ == ''__main__'': db.create_all() app.run()


El hecho de que PEP8 considere solo constantes en el nivel del módulo es probablemente la razón por la que muchos desarrolladores utilizan una función main () dedicada.

Así podrías resolver tu problema así:

def main(): app = Flask(__name__) app.config[''SECRET_KEY''] = ''hard to guess string'' app.config[''SQLALCHEMY_DATABASE_URI''] = ''mysql://root:@localhost:3306/test?'' app.config[''SQLALCHEMY_COMMIT_ON_TEARDOWN''] = True app.config[''SQLALCHEMY_TRACK_MODIFICATIONS''] = True bootstrap = Bootstrap(app) moment = Moment(app) db = SQLAlchemy(app) db.create_all() app.run() if __name__ == ''__main__'': main()


Renombra esas variables a mayúsculas.

Como

app = Flask(__name__) => APP = Flask(__name__) bootstrap = Bootstrap(app) => BOOTSTRAP = Bootstrap(app)


Según lo explicado por Kundor, el PEP 8 establece que:

Las constantes generalmente se definen en un nivel de módulo y se escriben en mayúsculas con guiones bajos que separan las palabras.

El punto es que las "constantes" en python realmente no existen. Pylint, según PEP 8, espera que las variables de nivel de módulo sean "constantes".

Dicho esto tienes varias opciones:

  • no desea que esta cosa "constante", luego cambie la expresión regular const-rgx para que sea igual a, por ejemplo, variable-rgx ,

  • puede desactivar esas advertencias para este archivo, o incluso localmente en el archivo, usando # pylint: disable=invalid-name ,

  • Evite las variables de nivel de módulo, envolviéndolas en una función.

En su caso, me gustaría ir con la tercera opción, al crear una función build_app o algo similar, que devolvería la aplicación (y quizás el objeto ''db'' también, pero tiene varias opciones allí). Luego podrías agregar una sal de la segunda opción para obtener algo como:

app = build_app() # pylint: disable=invalid-name