import_module python import module python-importlib

import_module - __ import__ python



Cómo importar un módulo en Python con importlib.import_module (3)

Creo que es mejor usar importlib.import_module(''.c'', __name__) ya que no necesita saber acerca de a y b .

También me pregunto si, si tiene que usar importlib.import_module(''abc'') , ¿por qué no usar import abc ?

Estoy tratando de usar importlib.import_module en python 2.7.2 y ejecutar el extraño error.

Considere la siguiente estructura dir:

a | + - __init__.py - b | + - __init__.py - c.py

a/b/__init__.py tiene el siguiente código:

import importlib mod = importlib.import_module("c")

(En el código real "c" tiene un nombre).

Intentar importar ab produce el siguiente error:

>>> import a.b Traceback (most recent call last): File "", line 1, in File "a/b/__init__.py", line 3, in mod = importlib.import_module("c") File "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named c

¿Qué me estoy perdiendo?

Gracias.


Para las importaciones relativas, tiene que a) usar el nombre relativo b) proporcionar el ancla explícitamente:

importlib.import_module(''.c'', ''a.b'')

Por supuesto, también puedes hacer importación absoluta en su lugar:

importlib.import_module(''a.b.c'')


Y no se olvide de crear un __init__.py con cada carpeta / subcarpeta (incluso si están vacías)