web-dev-qa-db-ja.com

python-pylint 'C0103:無効な定数名

私はこの写真のエラーについて混乱しています:

enter image description here

修正方法がわかりません。私のプログラムは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()
39
Xing

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

49
sthenault

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

PEP 8 定数の名前を宣言します すべて大文字にする必要があります

したがって、これらの変数の名前をすべて大文字に変更してください。

ヒント:「C0103」をグーグルで検索すると、PyLintメッセージwiki そのメッセージのエントリ に詳細が表示されます。

5
Nick Matteo

これらの変数の名前をすべて大文字に変更します。

といった

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

pythonスクリプトの先頭で次の行を使用して実行できます。

#pylint:disable = invalid-name

これにより、静的コードアナライザーで無効な定数規約メッセージがすべて無効になります。

0
Ankita singh