Ret*_*sam 25 python warnings pylint
所以我正在研究Python中的一个项目,并试图通过pylint来保持它的标准.所以,我有一个源文件,(我们只称它为a.py)
#a.py
import loggingsetup
def foo():
log.info("This is a log message")
Run Code Online (Sandbox Code Playgroud)
但是,我想控制日志记录的样子,所以在loggingsetup中我有类似的东西:
#loggingsetup.py
import logging
logging.root.setLevel(logging.DEBUG)
consoleOut = logging.StreamHandler()
consoleOut.setLevel(logging.INFO)
consoleOut.setFormatter(logging.Formatter("\t"+logging.BASIC_FORMAT))
logging.root.addHandler(consoleOut)
#etc
Run Code Online (Sandbox Code Playgroud)
现在,这似乎工作正常.我想,作为一个初步的问题,我应该问,如果这是去了解这个正确的方式,或者如果有构建我的代码以不同的方式,这将是优选的.
但我的主要问题是,当我在a.py上运行pylint时,我收到类似"未使用的import - import loggingsetup"的警告,因为我实际上并没有从loggingsetup调用任何方法或函数.
我可以做一些事情,比如重新定义loggingsetup的主体作为一个函数并调用它,但它看起来很傻和容易出错(如果我从其他地方导入loggingsetup,我不得不担心调用它两次,如果我理解了python处理导入,这不是我当前设置的问题).
我显然可以告诉pylint忽略警告,但我想我先问这里,以确保这实际上不是我应该处理的事情.
sth*_*ult 28
在这种情况下,您仍然可以明确告诉pylint这个未使用的导入:
import loggingsetup # pylint: disable=unused-import
Run Code Online (Sandbox Code Playgroud)
请注意,该指令与导入位于同一行,因此W0611仅对此行禁用,而不是对以下所有块禁用.
rut*_*sky 17
如果您使用pylint ,则 flake8可以通过以下方式忽略两个工具中未使用的导入警告:
import loggingsetup # noqa # pylint: disable=unused-import
Run Code Online (Sandbox Code Playgroud)
kin*_*all 12
我将使用的方法是loggingsetup作为一种包装使用logging.
import logging
# set up logging config here
from logging import *
Run Code Online (Sandbox Code Playgroud)
然后在您的其他模块中:
import loggingsetup as logging
Run Code Online (Sandbox Code Playgroud)
您可能希望使用loggingsetup此情况以外的名称,例如tweaked_logging或logging_with_my_settings.
正如您所提到的,您自己将其包装在函数中并显式调用设置将解决此警告。正如史蒂文提到的,这将被认为是更好的代码,因为它更明确地说明了您正在做的事情。
如果您担心调用此函数两次,您当然可以使用模块内部标志来允许函数体仅执行一次。
__initialized = False
def init():
if not __initialized:
__initialized = True
#DoStuff
Run Code Online (Sandbox Code Playgroud)