J'essaie d'utiliser importlib.import_module
in Python 2.7.2 et rencontrez l'étrange erreur.
Considérez la structure dir suivante:
a | + - __init __. py - b | + - __init __. py - c.py
a/b/__init__.py
a le code suivant:
import importlib mod = importlib.import_module ("c")
(En vrai code "c"
a un nom.)
Essayer import a.b
, renvoie l'erreur suivante:
>>> import ab Traceback (dernier appel le plus récent): Fichier "", ligne 1, dans Fichier "a/b/__ init__.py ", ligne 3, dans mod = importlib.import_module (" c ") Fichier" /opt/Python-2.7.2/lib/python2.7/importlib/__init__.py ", ligne 37, dans import_module __import __ (nom) ImportError: aucun module nommé c
Qu'est-ce que je rate?
Merci!
Pour les importations relatives, vous devez:
b) fournir explicitement l'ancre
importlib.import_module('.c', 'a.b')
Bien sûr, vous pouvez également simplement importer à la place:
importlib.import_module('a.b.c')
Je pense qu'il vaut mieux utiliser importlib.import_module('.c', __name__)
puisque vous n'avez pas besoin de connaître a
et b
.
Je me demande également que si vous devez utiliser importlib.import_module('a.b.c')
, pourquoi ne pas simplement utiliser import a.b.c
?
Et n'oubliez pas de créer un __init__.py
avec chaque dossier/sous-dossier (même s'ils sont vides)