Да, вы можете загрузить модуль дважды:
import mod
import sys
del sys.modules["mod"]
import mod as mod2
Теперь mod
и mod2
являются двумя экземплярами одного и того же модуля.
Тем не менее, я сомневаюсь в этомвсегда полезноВместо этого используйте классы - в конце концов это будет меньше работать.
Редактировать : В Python 2.x вы также можете использовать следующий код для «ручного» импорта модуля:
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
Это решение может быть более гибким, чем первое.Вам больше не нужно «бороться» с механизмом импорта, поскольку вы (частично) запускаете свой собственный.(Обратите внимание, что эта реализация не устанавливает атрибуты модуля __file__
, __path__
и __package__
- если они необходимы, просто добавьте код для их установки.)