Ich bin verwirrt über die Fehler in diesem Foto:
Ich weiß nicht, wie ich sie reparieren soll. Mein Programm ist ein Python-Flask-Webframe. Wenn ich VScode zum Debuggen meines Programms verwende, zeigt Pylint diese Fehler an. Ich weiß, dass dieses Problem keine Rolle spielt, aber es ärgert mich. Wie kann ich es reparieren?
# -*- 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 __== '__main__':
db.create_all()
app.run()
Wie von Kundor erklärt, besagt PEP 8 :
Konstanten werden in der Regel auf Modulebene definiert und in Großbuchstaben mit Unterstreichungszeichen zwischen den Wörtern geschrieben.
Der Punkt ist, dass "Konstanten" in python= nicht wirklich existieren. Pylint erwartet gemäß PEP 8, dass Variablen auf Modulebene "Konstanten" sind.
Davon abgesehen haben Sie mehrere Möglichkeiten:
sie wollen dieses "konstante" Ding nicht, dann ändern Sie den regulären Ausdruck von pylint const-rgx
so, dass er z. variable-rgx
,
sie können diese Warnungen für diese Datei oder sogar lokal in der Datei mit # pylint: disable=invalid-name
deaktivieren.
vermeiden Sie Variablen auf Modulebene, indem Sie sie in eine Funktion einschließen.
In Ihrem Fall würde ich mit der dritten Option fortfahren, indem ich eine build_app
- Funktion oder etwas Ähnliches erstelle, die die Anwendung zurückgibt (und möglicherweise auch das 'db'-Objekt, aber Sie haben dort mehrere Möglichkeiten). Dann können Sie ein Salz der zweiten Option hinzufügen, um Folgendes zu erhalten:
app = build_app() # pylint: disable=invalid-name
Die Tatsache, dass PEP8 nur Konstanten auf Modulebene berücksichtigt, ist wahrscheinlich der Grund, warum viele Entwickler eine dedizierte main () - Funktion verwenden.
So könnten Sie Ihr Problem so lösen:
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 __== '__main__':
main()
PEP 8 legt fest, dass Namen von Konstanten in Großbuchstaben angegeben werden sollen .
Benennen Sie diese Variablen also in Großbuchstaben um.
Tipp: Wenn Sie "C0103" googeln, gelangen Sie zum PyLint-Nachrichten-Wiki Eintrag für diese Nachricht mit Details dazu.
Benennen Sie diese Variablen in Großbuchstaben um.
Sowie
app = Flask(__name__) => APP = Flask(__name__)
bootstrap = Bootstrap(app) => BOOTSTRAP = Bootstrap(app)
sie können die folgende Zeile am Anfang Ihres Python-Skripts verwenden und ausführen:
# pylint: disable = ungültiger Name
Es deaktiviert alle ungültigen Konventionen für Konstanten im statischen Code-Analysator.