[IPython-user] Embedded IPython and -pylab
Inigo Aldazabal Mensa
inigo_aldazabal@ehu...
Mon Sep 15 03:56:42 CDT 2008
El Sábado, 13 de Septiembre de 2008 11:09, Ville M. Vainio escribió:
>
> > Any idea on how could I inherit the whole previous namespace into the
> > newly created IPython session? And regarding this, I understand that
>
> Try doing ip.user_ns.update(globals()) in the embedding code.
Thank you very much, that was what I was looking for.
>
> > the "exported" variables get duplicated in memory, am I rigth?
>
> No, they are not duplicated in the memory. It's how python object
> model works in general - only the names are created that point to the
> objects themselves.
That is what I thought first, but then if I change the variables inside the
ipython instance, the change does not propagate when I go out from it, eg:
[code]
import IPython.ipapi
import IPython.Shell
a=10
print "a: ", a
shellclass = IPython.Shell._select_shell(['ipython', '-pylab'])
ses = IPython.ipapi.make_session(shellclass=shellclass)
ip = ses.IP.getapi()
ip.user_ns.update(globals())
ses.mainloop()
print "a: ", a
[/code]
If inside ipython I change the value of a, it doesn't remain changed when
I exit from it.
Why is this?
mmm... while writting this I checked a bit more and it seems to be related
on how python itself treats variable aliasing.
>>> a=1
>>> b=a
>>> b is a
True
>>> b=2
>>> b is a
False
>>> a
1
>>>
I think I understand what happens, but I'll have to think about it a bit
more.
Thanks for your help.
More information about the IPython-user
mailing list