Nick Coghlan wrote:
> Is > this something to do with system modules being singletons?
They aren't singletons in the GoF design pattern sense. However,
Python's import
machinery operates in such a way that it takes effort to get multiple
version of
the same module into memory at the same time (it *can* be done, but
you have to
work at it).
Given that this is exactly what I want, how can you do it?
If you just want to reload an existing module, use the builtin "reload" function.
Getting multiple versions of a module into sys.modules at the same time isn't something I've ever actually wanted to do, but the following will do it:
Py> import sys Py> sys.modules["sys1"] = sys Py> del sys.modules["sys"] Py> import sys Py> import sys1 Py> sys is sys1 False
However:
1. Doing this at all is probably a bad idea (since you may end up duplicating objects that are meant to be unique within the process, and any C-extension code will still be shared between the multiple versions of the module)
2. Doing it to 'sys' like I just did is an even worse idea, since you *definitely* end up doing 1 :)
Cheers, Nick.
-- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list