One nice thing about Python as compared to some other scripting languages, is that it has a shell that enables us to test our Python script on the fly without needing to write a script file first
It’s nice and all that, but when you’re too used to IDEs which has features such as auto completion etcetera, you’ll feel like something is not right about the default python shell.
That changes when I come to IPython, one of the few other enhanced Python shell. The one feature I like most is the auto complete feature, which among other by using it I don’t need to remember module names, and at the same time would list and try Python modules that I’ve never heard of.
In Ubuntu, or debian in general, the package is called ipython, and to install it just;
shakir@herugrim ~ $ sudo apt-get install ipython
Can you spot the differences between this
shakir@herugrim ~ $ python
Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import command
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named command
>>> import commands
>>> status, output = commands.getoutputstatus ('ls')
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'getoutputstatus'
>>> status, output = commands.getstatusoutput ('ls')
>>> print output
Desktop
Documents
Music
Photos
>>>
shakir@herugrim ~ $
and this?
shakir@herugrim ~ $ ipython
Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32)
Type "copyright", "credits" or "license" for more information.
IPython 0.8.1 -- An enhanced Interactive Python.
? -> Introduction to IPython's features.
%magic -> Information about IPython's 'magic' % functions.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: import command
---------------------------------------------------------------------------
Traceback (most recent call last)
/home/shakir/ in ()
: No module named command
In [2]: import commands
In [3]: status, output = commands.
commands.__all__ commands.__hash__ commands.__setattr__
commands.__class__ commands.__init__ commands.__str__
commands.__delattr__ commands.__name__ commands.getoutput
commands.__dict__ commands.__new__ commands.getstatus
commands.__doc__ commands.__reduce__ commands.getstatusoutput
commands.__file__ commands.__reduce_ex__ commands.mk2arg
commands.__getattribute__ commands.__repr__ commands.mkarg
In [3]: status, output = commands.gets
commands.getstatus commands.getstatusoutput
In [3]: status, output = commands.getstatusoutput('ls')
In [4]: print output
Desktop
Documents
Music
Photos
In [5]:
Do you really want to exit ([y]/n)? y
shakir@herugrim ~ $
I hope you can guess when did I press the [tab] key