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
PEP 8 decreta que los nombres de las constantes deben estar en mayúsculas .
Entonces, renombra esas variables a mayúsculas.
Consejo: si busca en Google ''C0103'', lo llevará a la entrada de la wiki de mensajes de PyLint para ese mensaje , con detalles sobre él.