[elbe-devel] [PATCH] elbepack: make use of importlib.import_module

Eduard Krein eduard.krein at linutronix.de
Mon Apr 8 12:41:04 CEST 2024


Am Mittwoch, dem 20.03.2024 um 08:45 +0100 schrieb Thomas Weißschuh:
> Instead of manually messing with __import__ and sys.modules use
> importlib which provides a nice interface for the module loader.
> 
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>

Reviewed-by: Eduard Krein <eduard.krein at linutronix.de>
> ---
>  elbe                        | 11 ++---------
>  elbepack/commands/daemon.py |  5 ++---
>  elbepack/directories.py     |  2 +-
>  3 files changed, 5 insertions(+), 13 deletions(-)
> 
> diff --git a/elbe b/elbe
> index d688b5d105f2..9f4905743681 100755
> --- a/elbe
> +++ b/elbe
> @@ -4,15 +4,9 @@
>  # SPDX-License-Identifier: GPL-3.0-or-later
>  # SPDX-FileCopyrightText: 2013-2017 Linutronix GmbH
>  
> +import importlib
>  import sys
>  
> -# We need to import elbepack.commands so that
> -# elbepack/commands/__init__.py is run and the commands package is
> -# register into the elbepack namespace.  This is later use by
> -# get_cmd_list() and the magic stuff with __import__() at the end of
> -# this file
> -#
> -import elbepack.commands  # noqa: F401
>  from elbepack.directories import get_cmdlist
>  from elbepack.version import elbe_version
>  
> @@ -42,7 +36,6 @@ if sys.argv[1] not in cmd_list:
>  
>  modname = 'elbepack.commands.' + sys.argv[1]
>  
> -mod = __import__(modname)
> -cmdmod = sys.modules[modname]
> +cmdmod = importlib.import_module(modname)
>  
>  cmdmod.run_command(sys.argv[2:])
> diff --git a/elbepack/commands/daemon.py
> b/elbepack/commands/daemon.py
> index edcfbf168d77..04bc1a6c6987 100644
> --- a/elbepack/commands/daemon.py
> +++ b/elbepack/commands/daemon.py
> @@ -2,7 +2,7 @@
>  # SPDX-License-Identifier: GPL-3.0-or-later
>  # SPDX-FileCopyrightText: 2014, 2017 Linutronix GmbH
>  
> -import sys
> +import importlib
>  from optparse import OptionParser
>  from pkgutil import iter_modules
>  
> @@ -37,8 +37,7 @@ def run_command(argv):
>      for d in daemons:
>          print(f'enable {d}')
>          module = 'elbepack.daemons.' + str(d)
> -        _ = __import__(module)
> -        cmdmod = sys.modules[module]
> +        cmdmod = importlib.import_module(module)
>          cherrypy.tree.graft(
>              cmdmod.get_app(cherrypy.engine), '/' + str(d))
>  
> diff --git a/elbepack/directories.py b/elbepack/directories.py
> index 2501ff6e21af..207c4d53b097 100644
> --- a/elbepack/directories.py
> +++ b/elbepack/directories.py
> @@ -8,7 +8,7 @@ import subprocess
>  import sys
>  from pkgutil import iter_modules
>  
> -import elbepack
> +import elbepack.commands
>  
>  
>  # set global variables that are used in other modules via imports
> 
> ---
> base-commit: 0494866f13a20374514e056391138199803f0060
> change-id: 20240319-importlib-118e75f390ff
> 
> Best regards,

-- 
Eduard Krein
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 19; Fax.: +49 7556 25 999 99

Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
can be found here): https://linutronix.de/legal/data-protection.php

Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen |
Registergericht (Registration Court): Amtsgericht Freiburg i.Br.,
HRB700 806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas
Gleixner, Tiffany Silva, Sean Fennelly, Jeffrey Schneiderman






More information about the elbe-devel mailing list