Module Python avec un tiret, ou un trait d'Union (-) dans son nom
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.
Est-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 redessiner et tester un beaucoup plus grand un ensemble d'applications. Aussi, je ne pense pas que mes maîtres d'entreprise approuveraient que je prenne le temps de mettre en œuvre un tel changement.)
2 réponses
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 où 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, selon moi, a un certain mérite en utilisant __import__()
.
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
Selon les docs:
"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
+ seulement