私はこの写真のエラーについて混乱しています:
修正方法がわかりません。私のプログラムはPython-Flask Webフレームです。 VScodeを使用してプログラムをデバッグすると、Pylintはこれらのエラーを表示します。この問題は問題ではないことはわかっていますが、イライラさせられます。どうすれば修正できますか?
# -*- 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()
Kundorが説明したように、 PEP 8 は次のように述べています:
通常、定数はモジュールレベルで定義され、単語を区切るアンダースコアですべて大文字で記述されます。
ポイントは、pythonの「定数」は実際には存在しないということです。 PEP 8によると、Pylintはモジュールレベルの変数が「定数」であることを期待しています。
いくつかのオプションがあると言われています:
この「定数」を望まない場合は、pylintのconst-rgx
正規表現を、たとえばvariable-rgx
、
# pylint: disable=invalid-name
を使用して、このファイルの警告を無効にすることも、ファイル内でローカルに無効にすることもできます。
関数にラップすることにより、モジュールレベルの変数を回避します。
あなたの場合、build_app
関数または類似のものを作成することにより、アプリケーション(および 'db'オブジェクトも可能ですが、いくつかの選択肢があります)を作成することにより、3番目のオプションを選択します。次に、2番目のオプションのソルトを追加して、次のようなものを取得できます。
app = build_app() # pylint: disable=invalid-name
PEP8がモジュールレベルで定数のみを考慮するという事実は、多くの開発者が専用のmain()関数を使用する理由です。
したがって、次のように問題を解決できます。
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 定数の名前を宣言します すべて大文字にする必要があります 。
したがって、これらの変数の名前をすべて大文字に変更してください。
ヒント:「C0103」をグーグルで検索すると、PyLintメッセージwiki そのメッセージのエントリ に詳細が表示されます。
これらの変数の名前をすべて大文字に変更します。
といった
app = Flask(__name__) => APP = Flask(__name__)
bootstrap = Bootstrap(app) => BOOTSTRAP = Bootstrap(app)
pythonスクリプトの先頭で次の行を使用して実行できます。
#pylint:disable = invalid-name
これにより、静的コードアナライザーで無効な定数規約メッセージがすべて無効になります。