“未使用的导入警告”和挂架

2024-09-22 14:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在用Python开发一个项目,并试图用pylint来保持它符合标准。所以,我有一个源文件(我们称之为a.py)

#a.py
import loggingsetup

def foo():
   log.info("This is a log message")

但是,我想控制日志记录的外观,所以在日志设置中,我有如下内容:

#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

现在,这似乎工作正常。我想作为一个初步的问题,我应该问一下这是否是正确的方法,或者是否有一种不同的方式来构建我的代码,这将是更好的。

但我的主要问题是,当我在.py上运行pylint时,会收到一个警告,比如“unused import-import loggingsetup”,因为我实际上没有从loggingsetup调用任何方法或函数。

我可以做一些事情,比如将loggingsetup的主体重新定义为一个函数并调用它,但是这看起来很愚蠢而且容易出错(如果我确实从其他地方导入loggingsetup,并且如果我理解python如何处理导入,那么我就不得不担心调用它两次,这不是我当前设置的问题)。

很明显,我可以告诉pylint忽略这个警告,但我想我应该先问一下,以确保这不是我应该以不同的方式处理的事情。


Tags: 项目方法函数pyimportlog警告logging
3条回答

如果使用pylintflake8,则可以这样忽略两个工具中未使用的导入警告:

import loggingsetup  # noqa # pylint: disable=unused-import

在这种情况下,您仍然可以显式地告诉pylint这个未使用的导入的目的是:

import loggingsetup # pylint: disable=unused-import

请注意,该指令与导入位于同一行,因此W0611仅对此行禁用,而不是对下面的所有块禁用。

我将使用的方法是使用loggingsetup作为logging的包装。

import logging

# set up logging config here

from logging import *

然后在其他模块中:

import loggingsetup as logging

在这种情况下,您可能需要使用loggingsetup以外的名称,例如tweaked_logginglogging_with_my_settings

相关问题 更多 >