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 rechercher 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 bonne pratique. Mais dans ce cas, je préférerais ne pas repenser et tester un ensemble d'applications beaucoup plus volumineux. De plus, je ne pense pas que mes responsables d'entreprise approuveraient que je prenne le temps de mettre en œuvre un tel changement.)
foo-bar
s parfoobar
ou quoi que ce soit? Est-ce difficile?Réponses:
Vous pouvez le faire en utilisant
__import__()
. Par exemple: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.
la source
Je sais que cette question a déjà reçu une réponse à la satisfaction du demandeur, mais voici une autre réponse qui, selon moi, a un certain mérite d'être utilisée
__import__()
.Selon la documentation:
Python 2.7
+ seulementla source
Essayez d'utiliser un trait de soulignement au lieu d'un trait d'union.
importer pymysql_utils
a fonctionné pour moi même si import pymysql-utils était le nom du module utilisé par pip
la source