How to get all the variables in a python shell

Lee lixinyi.23 at gmail.com
Fri May 30 20:02:06 EDT 2008


Hi, thank your for your reply. I will try iPython.

I did try sage for a while, but I found it quite heavy, and I'm not sure
whether it's easy to expand like python or not. New libraries can be
easily imported in python, and those libraries could be build in almost
any popular computer 
language. Can sage do that? 

The reason why I want to work on this is the same with you. I'm an
automotive engineer. What I need is a powerful 
yet light-weight computation software, which can help me in analyzing
datas on the engine test bench. Matlab is powerful, but it contains so
much stuff that I actually don't need but have to buy, and you know that

it's quite expansive. 

So my idea is to build a GUI with python first, and then intergrate as
many exsiting computation libraries as possible. There also has to be a
plotting app, which is quite important and need to think about. I did
try Gnuplot-python combination and matplotlib,  but found both terrible
inferior to Matlab plotting functionality.  Do you know any plotting
programs written in 
python?


-----Original Message-----
From: python-list-bounces+lixinyi.23=gmail.com at python.org
[mailto:python-list-bounces+lixinyi.23=gmail.com at python.org] On Behalf
Of caca at mailinator.com
Sent: Friday, May 30, 2008 9:55 PM
To: python-list at python.org
Subject: Re: How to get all the variables in a python shell


  Your project interests me. Actually I was thinking about doing the
same. I hadn't worked on it at all, but I though about it and had the
idea about reading the session namespace directly, which I though would
be stored in the __dict__ attribute of something.

  After reading your post, I have been trying a little bit, and I have
found a way to do it with ipython. If you open an ipython console, press
_ then hit TAB, you'll see it stores some useful information, including
all input, all output, and after some searching, a dictionary matching
all variables to its values.

__IPYTHON__.user_ns

  There is a little extra stuff in there that you don't want, but that
can be easily filtered (the extra stuff is either 'In', 'Out', 'help' or
starts with '_'). I've tried it, and you can change the value in that
dict to alter the value of the real variable. Say you have a variable
'test':

test=5
__IPYTHON__.user_ns['test']=4
print test #prints 5

  If I get it right, python is a dynamic language, and you won't break
things by messing around with its inner stuff like this, but you better
check it.

  Is this what you had in mind?
--
http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list