Python: ¿Cómo cargar un módulo dos veces?

¿Hay una manera de cargar un módulo dos veces en la misma sesión de python?
Para llenar esta pregunta con un ejemplo: Aquí hay un módulo:

Mod.py

x = 0 

Ahora me gustaría importar ese módulo dos veces, como crear dos instancias de una clase para tener realmente dos copias de x .

Para responder las preguntas de los comentarios, “por qué alguien querría hacer eso si pudiera crear una clase con x como variable”:
Usted tiene razón, pero existe una gran cantidad de fonts que deberían ser reescritas, y cargar un módulo dos veces sería una solución rápida ^^.

Sí, puedes cargar un módulo dos veces:

 import mod import sys del sys.modules["mod"] import mod as mod2 

Ahora, mod y mod2 son dos instancias del mismo módulo.

Dicho esto, dudo que esto sea útil alguna vez. En su lugar, use clases: eventualmente será menos trabajo.

Edición : en Python 2.x, también puede usar el siguiente código para importar “manualmente” un módulo:

 import imp def my_import(name): file, pathname, description = imp.find_module(name) code = compile(file.read(), pathname, "exec", dont_inherit=True) file.close() module = imp.new_module(name) exec code in module.__dict__ return module 

Esta solución podría ser más flexible que la primera. Ya no tiene que “luchar” contra el mecanismo de importación ya que está (en parte) lanzando su propio mecanismo. (Tenga en cuenta que esta implementación no establece los __file__ , __path__ y __package__ del módulo; si son necesarios, solo agregue el código para establecerlos).

Podrías usar la función __import__ .

 module1 = __import__("module") module2 = __import__("module") 

Edición: Como resultado, esto no importa dos versiones separadas del módulo, en lugar de module1 , el módulo module1 y el módulo module1 module2 al mismo objeto, como lo señaló Sven.