How to reload local namespace definitions in the python interpreter?

Steve Holden steve at holdenweb.com
Mon Apr 4 11:10:21 EDT 2005


Tim Jarman wrote:
> test1dellboy3 at yahoo.co.uk wrote:
> 
> 
>>Hi,
>>
>>I am a beginner using the python interpreter. To reduce typing effort,
>>I created a module called "aliases.py" containing some aliases for
>>objects I commonly use like -
>>
>>aliases.py :
>>
>>
>>import filecmp, os, commands
>>
>>op = os.path
>>go = commands.getoutput
>>dc = filecmp.dircmp
>>p1 = '/mnt/usbkey/flash/'
>>p2 = '/mnt/fat32/myfiles/flash/'
>>
>>When I start up the interpreter, I can simply type -
>>
>>from aliases import *
>>
>>This works fine, but each time I change any of the definitions in
>>aliases.py, I
>>have to restart the interpreter and type "from aliases import *"
>>again. Is there any way to reload these definitions without restarting
>>the interpreter?
>>
>>-Slath
> 
> 
> reload(aliases)
> 
Unfortunately a simple reload of the module won't result in the required 
changes to the local namespace:

$ cat test87.py
val = 33

  >>> from test87 import *
  >>> print val
33
  >>> val = 42
  >>> reload(test87)
<module 'test87' from 'test87.pyc'>
  >>> print val
42
  >>>

> See: http://www.python.org/doc/2.4.1/lib/built-in-funcs.html
> 
> By the way, are you aware of the import ... as ... idiom?
> e.g. import os.path as op
> 

This would, of course, require the user to qualify the names by 
prefixing them with "op.".

regards
  Steve
-- 
Steve Holden        +1 703 861 4237  +1 800 494 3119
Holden Web LLC             http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/




More information about the Python-list mailing list