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)