簡體   English   中英

“未使用的導入警告”和 pylint

[英]"Unused import warning" and pylint

所以我正在用 Python 做一個項目,並試圖讓它符合 pylint 的標准,一般來說 . 所以,我有一個源文件,(我們就叫它 a.py)

#a.py
import loggingsetup

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

但是,我想控制日志記錄的樣子,所以在 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

現在,這似乎工作正常。 我想作為一個初步問題,我應該問這是否是解決此問題的正確方法,或者是否有其他更好的方式來構建我的代碼。

但我的主要問題是,當我在 a.py 上運行 pylint 時,會收到類似“未使用的導入 - 導入 loggingsetup”的警告,因為我實際上並沒有從 loggingsetup 調用任何方法或函數。

我可以做一些事情,比如將 loggingsetup 的主體重新定義為一個函數並調用它,但它看起來很愚蠢且容易出錯(如果我確實從其他地方導入 loggingsetup,並且如果我理解如何調用它,我將不得不擔心調用它兩次python 處理導入,這不是我當前設置的問題)。

我顯然可以告訴 pylint 忽略警告,但我想我會先在這里詢問以確保這實際上不是我應該以不同方式處理的事情。

在這種情況下,您仍然可以明確告訴pylint這個未使用的導入:

import loggingsetup # pylint: disable=unused-import

請注意,該指令與導入位於同一行,因此W0611僅對此行禁用,而不是對以下所有塊禁用。

如果使用pylint flake8 ,則可以通過以下方式忽略兩個工具中未使用的導入警告:

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

我將使用的方法是使用loggingsetup作為logging的一種包裝器。

import logging

# set up logging config here

from logging import *

然后在您的其他模塊中:

import loggingsetup as logging

您可能需要使用比其他的名稱loggingsetup在這種情況下,如tweaked_logginglogging_with_my_settings

您的代碼應該在主腳本中調用一次的函數中

正如您所提到的那樣,將其包裝在一個函數中並顯式調用該設置將解決此警告。 正如Steven所說,這將被認為是更好的代碼,因為它更清楚你正在做什么。

如果您擔心兩次調用此函數,您當然可以使用模塊內部標志來僅允許執行函數體一次。

__initialized = False

def init():
    if not __initialized:
        __initialized = True
        #DoStuff

你也可以

assert loggingsetup

擺脫你的背上的絨毛

這是你如何滿足警告(vscode + pylint);

from array import array
ar = array('i', [])

因此,不再使用通配符,而是再次指定“數組”方法。

我有很長的導入路徑,由於行大小的限制,它跨越了多行。 我必須確保在導入的第一行而不是最后一行使用了# noqa 例如

from this.could.be.a.very.long.path import (  # noqa
some_method,
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM