J'ai un module python existant avec un tiret dans son nom, foo-bar.py
Changer le nom du module est quelque chose que je préférerais éviter car le module est partagé, et je devrais chasser tous les endroits où il est utilisé pour que mon cas particulier fonctionne.
Existe-t-il un moyen de charger un module dont le nom contient le "-" généralement interdit?
(Je comprends que ce n'est pas une meilleure pratique. Mais pour cette situation, je préférerais ne pas reconcevoir et tester un ensemble d'applications beaucoup plus large. De plus, je ne pense pas que mes chefs d'entreprise approuveraient que je prenne le temps de mettre en œuvre un tel changement.)
Vous pouvez le faire en utilisant __import__()
. Par exemple:
foobar = __import__("foo-bar")
Mais vous devriez vraiment renommer le module à la place. De cette façon, vous pouvez éviter toute confusion lorsque le nom de fichier du module est différent de l'identifiant utilisé dans le programme.
Je sais que cette question a déjà été répondue à la satisfaction du demandeur, mais voici une autre réponse qui, je pense, a un certain mérite ci-dessus en utilisant __import__()
.
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
Selon les documents:
"This provides an implementation of import which is portable to any
Python interpreter. This also provides an implementation which is
easier to comprehend than one implemented in a programming language
other than Python."
Python 2.7
+ uniquement