346 votes

Comment importer un module lorsque le nom du module contient un tiret ou un trait d’union '-' ?

Je veux importer foo-bar.py. Cela fonctionne:

Cela ne signifie pas :

Ma question: Y a-t-il un moyen que je peux utiliser le format ci-dessus, c’est-à-dire pour importer un module qui a un en elle?

241voto

Julien Points 68

À partir de Python 3.1, vous pouvez utiliser importlib :

( https://docs.python.org/3/library/importlib.html )

147voto

IfLoop Points 59461

Tu peux pas. n’est pas un identificateur. renommez le fichier en

Modifier : Si ce n’est pas votre objectif (comme dans: vous ne vous souciez pas de ce qui se passe avec , vous n’en avez pas besoin pour vous importer lui-même), il suffit d’obtenir toutes les globales du fichier dans votre propre portée, vous pouvez utiliser ``

140voto

Raymond Hettinger Points 50330

Si vous ne pouvez pas renommer le module pour qu’il corresponde aux conventions d’affectation de noms Python, créez un nouveau module pour servir d’intermédiaire :

57voto

rednaw Points 3856

Si vous ne pouvez pas renommer le fichier d’origine, vous pouvez également utiliser un lien symbolique :

Ensuite, vous pouvez simplement:

12voto

Reda Drissi Points 191

Comme d’autres dits, vous ne pouvez pas utiliser le « - » dans le nommage python, il existe de nombreuses solutions de contournement, une telle solution qui serait utile si vous deviez ajouter plusieurs modules à partir d’un chemin utilise ``

Par exemple, si votre structure est comme ceci:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X