¿Cómo hacer múltiples importaciones en Python?

En Ruby, en lugar de repetir la palabra “require” (la palabra “import” en Python) muchas veces, lo hago

%w{lib1 lib2 lib3 lib4 lib5}.each { |x| require x } 

Así que itera sobre el conjunto de “libs” y “require” (importar) cada uno de ellos. Ahora estoy escribiendo un script en Python y me gustaría hacer algo así. ¿Hay alguna forma de hacerlo, o necesito escribir “importar” para todos ellos?

La “traducción” directa sería algo así como el siguiente código. De todos modos, ya que Python no importa las bibliotecas nombradas como cadenas, no funciona.

 requirements = [lib1, lib2, lib3, lib4, lib5] for lib in requirements: import lib 

Gracias por adelantado

Para el módulo conocido, simplemente sepáralos por comas:

 import lib1, lib2, lib3, lib4, lib5 

Si realmente necesita importar mediante progtwigción en función de variables dinámicas, una traducción literal de su ruby ​​sería:

 modnames = "lib1 lib2 lib3 lib4 lib5".split() for lib in modnames: globals()[lib] = __import__(lib) 

Aunque no hay necesidad de esto en tu ejemplo.

Prueba esto:

 import lib1, lib2, lib3, lib4, lib5 

También puede cambiar el nombre con el que se importan de esta manera, así:

 import lib1 as l1, lib2 as l2, lib3, lib4 as l4, lib5 

import lib1, lib2, lib3, lib4, lib5

Puede importar desde una cadena que contiene su nombre de módulo usando la función __import__ .

 requirements = [lib1, lib2, lib3, lib4, lib5] for lib in requirements: x = __import__(lib) 

Puede usar __import__ si tiene una lista de cadenas que representan módulos, pero probablemente esté más limpio si sigue la sugerencia de la documentación y usa importlib.import_module directamente:

 import importlib requirements = [lib1, lib2, lib3, lib4, lib5] imported_libs = {lib: importlib.import_module(lib) for lib in requirements} 

No tiene las bibliotecas importadas como variables disponibles de esta manera, pero podría acceder a ellas a través del diccionario imported_libs :

 >>> requirements = ['sys', 'itertools', 'collections', 'pickle'] >>> imported_libs = {lib: importlib.import_module(lib) for lib in requirements} >>> imported_libs {'collections': , 'itertools': , 'pickle': , 'sys': } >>> imported_libs['sys'].hexversion 50660592 

También puedes actualizar tus globals y luego usarlos como si se importaran “normalmente”:

 >>> globals().update(imported_libs) >>> sys