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)