Módulo de Python con un guión o guión (-) en su nombre

Tengo un módulo de Python existente con un guión en su nombre, foo-bar.py

Cambiar el nombre del módulo es algo que preferiría evitar ya que el módulo se comparte, y tendría que perseguir todos los lugares donde se usa para que mi caso especial funcione.

¿Hay alguna forma de cargar un módulo cuyo nombre contenga el ‘-‘ normalmente prohibido?

(Entiendo que esto no es una buena práctica. Pero para esta situación preferiría no rediseñar y probar un conjunto mucho más grande de aplicaciones. Además, no creo que mis maestros corporativos aprueben que me tome el tiempo para implementar tal cambio.)

Puedes hacerlo usando __import__() . Por ejemplo:

 foobar = __import__("foo-bar") 

Pero realmente debería cambiar el nombre del módulo en su lugar. De esa manera, puede evitar confusiones cuando el nombre de archivo del módulo es diferente del identificador utilizado en el progtwig.

Sé que esta pregunta ya ha sido respondida a satisfacción del autor de la pregunta, pero aquí hay otra respuesta que creo que tiene algún mérito sobre el uso de __import__() .

 import importlib mod = importlib.import_module("path.to.my-module") # mod.yourmethod() 

Según los documentos:

 "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 + solamente