44 votes

python-pylint 'C0103: Nom de constante invalide

Je suis confus à propos des erreurs sur cette photo:

entrez la description de l'image ici

Je ne sais pas comment les réparer. Mon programme est un cadre Web Python-Flask. Lorsque j'utilise VScode pour déboguer mon programme, Pylint affiche ces erreurs. Je sais que ce problème n'a pas d'importance, mais cela me rend agacé. Comment puis-je résoudre ce problème?

 # -*- 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()
 

57voto

sthenault Points 1178

Comme l'a expliqué Kundor, PEP 8 stipule que:

Les constantes sont généralement définis sur un module de niveau et à l'écrit dans toutes les lettres majuscules avec des traits de soulignement séparant les mots.

Le point est que les "constantes" dans python n'existe pas en réalité. Pylint, comme par PEP 8, prévoit que les variables de niveau module à être des "constantes."

Cela étant dit, vous avez plusieurs options:

  • vous ne voulez pas de cette "constante" chose, puis changer de pylint de l' const-rgx expression régulière pour être le même comme, par exemple, variable-rgx,

  • vous pouvez désactiver ces mises en garde pour ce fichier, ou même localement dans le fichier, à l'aide de # pylint: disable=invalid-name,

  • éviter les variables de niveau module, en les enveloppant dans une fonction.

Dans votre cas, je aller avec la troisième option, par la création d'un build_app fonction ou quelque chose de similaire, qui permettraient de redonner à la demande (et peut-être le 'db' objet en tant que bien, mais vous avez plusieurs choix il y a). Ensuite, vous pouvez ajouter un sel de la deuxième option pour obtenir quelque chose comme:

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

19voto

T.M. Points 111

Le fait que PEP8 considère uniquement les constantes au niveau du module est probablement la raison pour laquelle de nombreux développeurs utilisent une fonction main () dédiée.

Donc, vous pourriez résoudre votre problème comme ceci:

 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()
 

6voto

Kundor Points 101

PEP 8 décrète que les noms des constantes doivent être en majuscules .

Alors, renommez ces variables en majuscules.

Conseil: si vous cochez "C0103" sur Google, vous obtiendrez l' entrée du wiki des messages PyLint pour ce message , avec des détails à ce sujet.

2voto

JChen___ Points 429

Renommez ces variables en majuscules.

Tel que

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

0voto

Ankita singh Points 6

vous pouvez utiliser la ligne suivante au début de votre script python et l'exécuter:

# pylint: disable = nom-invalide

Il désactivera tous les messages de convention constante non valides dans l'analyseur de code statique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X