Je travaille donc sur un projet en Python et j'essaie de le maintenir aux normes avec pylint et plus généralement. Donc, j'ai un fichier source, (nous l'appellerons simplement a.py)
#a.py
import loggingsetup
def foo():
log.info("This is a log message")
Mais, je veux contrôler à quoi ressemble la journalisation, donc dans loggingsetup, j'ai quelque chose comme:
#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
Maintenant, cela semble bien fonctionner. Je suppose qu’en guise de question préliminaire, je devrais demander si c’est la bonne façon de procéder, ou s’il existe une autre façon de structurer mon code qui serait préférable.
Mais ma principale question est que lorsque je lance pylint sur apy, un avertissement du type "import - import loggingsetup inutilisé" apparaît, car je n’appelle pas de méthode ni de fonction à partir de loggingsetup.
Je pourrais faire quelque chose comme redéfinir le corps de loggingsetup en tant que fonction et l'appeler, mais cela semble idiot et sujet aux erreurs (je devrais m'inquiéter de l'appeler deux fois si je faisais importer loggingsetup d'un autre Python gère les importations, ce n'est pas un problème avec ma configuration actuelle).
Je pourrais évidemment dire à pylint de ne pas tenir compte de l'avertissement, mais je pensais que je demanderais d'abord à cet endroit de m'assurer que ce n'est pas quelque chose que je devrais gérer différemment.
L’approche que j’utiliserais est d’utiliser loggingsetup
comme une sorte de wrapper pour logging
.
import logging
# set up logging config here
from logging import *
Ensuite, dans vos autres modules, vous:
import loggingsetup as logging
Vous voudrez peut-être utiliser un nom autre que loggingsetup
dans ce cas, par exemple. tweaked_logging
ou logging_with_my_settings
.
Dans ce cas, vous pouvez toujours indiquer explicitement à pylint que cette importation non utilisée est destinée:
import loggingsetup # pylint: disable=unused-import
Notez que l'instruction se trouve sur la même ligne que l'importation. W0611 n'est donc désactivé que pour cette ligne et non pour tout le bloc ci-dessous.
Si vous utilisez pylint
et flake8
, vous pouvez ignorer l'avertissement d'importation non utilisé dans les deux outils de la manière suivante:
import loggingsetup # noqa # pylint: disable=unused-import
votre code devrait être dans une fonction appelée une fois dans le script principal
Comme vous l'avez mentionné, le fait d'envelopper une fonction et d'appeler explicitement le programme d'installation résoudrait cet avertissement. Et comme Steven l'a mentionné, cela serait considéré comme un meilleur code car il est plus explicite sur ce que vous faites.
Si vous ne souhaitez pas appeler cette fonction deux fois, vous pouvez bien sûr utiliser un indicateur interne du module pour permettre l’exécution du corps de la fonction une seule fois.
__initialized = False
def init():
if not __initialized:
__initialized = True
#DoStuff
Voici comment vous pouvez satisfaire l'avertissement (vscode + pylint);
from array import array
ar = array('i', [])
Ainsi, au lieu d’utiliser un caractère joker, spécifiez à nouveau la méthode "array".