trouble with reload
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Fri Aug 14 04:34:52 EDT 2009
On Fri, 14 Aug 2009 13:49:19 +0900, Terry Reedy wrote:
> Dr. Phillip M. Feldman wrote:
>> According to the Python documentation, 'reload' reloads a previously
>> imported module (so that changes made via an external editor will be
>> effective). But, when I try to use this command, I get the following
>> error message:
>>
>> TypeError: reload() argument must be module
>>
>> Any suggestions will be appreciated.
>
> Besides the other answers, do not use reload. It is removed in Py3
> because it cannot be made to work as people reasonably expect.
That's a damn shame, because it is very useful for interactive use once
you get it's quirks. Is it gone-gone or just removed from built-ins?
If the former, would the following be a reasonable replacement?
def reload(module):
if type(module) is not type(__builtins__):
raise TypeError("reload() argument must be module")
name = module.__name__
del globals()[name]
del sys.modules[name]
globals()[name] = __import__(name)
It seems to work for me, but I'm not sure if I've missed something.
--
Steven
More information about the Python-list
mailing list