gtb wrote:
On Mar 21, 11:37 am, Steve Holden <s...@holdenweb.comwrote:
>gtb wrote:
>>After a function has been imported to a shell how may it be deleted so
that after editing it can reloaded anew?
Use the built-in reload() function to reload the module that defines the
function.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Recent Ramblings http://holdenweb.blogspot.com
Thanks, tried that now and get nameError: with the following.
import sys
sys.path.append("c:\maxq\testScripts")
from CompactTest import CompactTest
from compactLogin import dvlogin
reload(compactLogin)
The local compactLogin isn't being bound to the module because of the
import form you are using.
Here's meta1.py:
$ more meta1.py
class MyMeta(type):
...
class MyClass:
__metaclass__ = MyMeta
Now see what happens when I import the MyMeta class from it:
>>from meta1 import MyMeta
import sys
sys.modules['meta1']
<module 'meta1' from 'meta1.py'>
>>reload(meta1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'meta1' is not defined
>>reload(sys.modules['meta1'])
<module 'meta1' from 'meta1.pyc'>
>>>
Note, however, that this reload() call does NOT re-bind the local
MyMeta, which still references the class defines in the original version
of the module. You'd be better off using
import compactLogin
and then setting
dvlogin = compactLogin.dvlogin
after the original import and each reload. Eventually you'll develop a
feel for how namespaces work in Python and you'll be able to take liberties.
Finally, note that there isn't much point doing the reload() unless the
content of the modue has actually changed!
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd
http://www.holdenweb.com
Skype: holdenweb
http://del.icio.us/steve.holden
Recent Ramblings
http://holdenweb.blogspot.com