Pylint 消息:无效常量名称(无效名称)
Pylint message: Invalid constant name (invalid-name)
Pylint 在 shorthand 记录器函数的情况下抱怨 Invalid constant name "myprint" (invalid-name)
。
# import
from utils import get_logger
LOGFILE = '6_evaluator.log'
myprint = get_logger(LOGFILE)
def main():
# some stuff
myprint('log log')
if __name__ == '__main__':
main()
这可以在不调整 pylint 配置的情况下完成吗?
如果需要,这里是get_logger
的定义:
import logging
import os
def get_logger(logfile):
""" Return a logger that log on stdout and in LOGFILE"""
if os.path.isfile('{}'.format(logfile)):
os.remove('{}'.format(logfile))
logging.basicConfig(filename='{}'.format(logfile), level=logging.INFO)
logger = logging.getLogger('')
logger.addHandler(logging.StreamHandler())
myprint = logger.info
myprint('log file at: {}'.format(logfile))
myprint('Again Hello from logger')
return myprint
问题是您在模块级别定义 myprint。
如果你在 main 中定义它,你不会从 pylint 得到这个错误。
将 myprint
的定义移动到 main()
是抑制消息的一种方法。
Per Pylint docs for invalid-name
(C0103),常量名称似乎必须有效地大写。因此,名称 MYPRINT
将不会生成消息。
如果您将如下注释附加到该行,则不应生成消息。
log = get_logger() # pylint: disable=locally-disabled, invalid-name
或者,为您的项目将以下内容添加到 .pylintrc
。这是我的首选解决方案。
[BASIC]
good-names=log
如果您希望整个模式的无效名称(而不仅仅是单个名称)有效,您可以在同一部分自定义 const-rgx
,等等。请参阅前面链接的 pylint 页面。
最后,如果您的应用程序很小且独立,您可以只配置和使用根记录器,例如 logging.warn('test')
。
Pylint 在 shorthand 记录器函数的情况下抱怨 Invalid constant name "myprint" (invalid-name)
。
# import
from utils import get_logger
LOGFILE = '6_evaluator.log'
myprint = get_logger(LOGFILE)
def main():
# some stuff
myprint('log log')
if __name__ == '__main__':
main()
这可以在不调整 pylint 配置的情况下完成吗?
如果需要,这里是get_logger
的定义:
import logging
import os
def get_logger(logfile):
""" Return a logger that log on stdout and in LOGFILE"""
if os.path.isfile('{}'.format(logfile)):
os.remove('{}'.format(logfile))
logging.basicConfig(filename='{}'.format(logfile), level=logging.INFO)
logger = logging.getLogger('')
logger.addHandler(logging.StreamHandler())
myprint = logger.info
myprint('log file at: {}'.format(logfile))
myprint('Again Hello from logger')
return myprint
问题是您在模块级别定义 myprint。
如果你在 main 中定义它,你不会从 pylint 得到这个错误。
将 myprint
的定义移动到 main()
是抑制消息的一种方法。
Per Pylint docs for invalid-name
(C0103),常量名称似乎必须有效地大写。因此,名称 MYPRINT
将不会生成消息。
如果您将如下注释附加到该行,则不应生成消息。
log = get_logger() # pylint: disable=locally-disabled, invalid-name
或者,为您的项目将以下内容添加到 .pylintrc
。这是我的首选解决方案。
[BASIC]
good-names=log
如果您希望整个模式的无效名称(而不仅仅是单个名称)有效,您可以在同一部分自定义 const-rgx
,等等。请参阅前面链接的 pylint 页面。
最后,如果您的应用程序很小且独立,您可以只配置和使用根记录器,例如 logging.warn('test')
。