webentwicklung-frage-antwort-db.com.de

python-pylint 'C0103: Ungültiger Konstantenname

Ich bin verwirrt über die Fehler in diesem Foto:

 enter image description here

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

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

49
sthenault

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()
11
T.M.

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.

6
Kundor

Benennen Sie diese Variablen in Großbuchstaben um.

Sowie

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

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.

0
Ankita singh