poke
poke

Reputation: 387517

Tab completion with Python's Cmd.cmd

After testing a while with the Cmd.cmd framework in python, I noticed a problem I don't know what to do about. Plus I believe to have this working some hours before (or I'm just crazy), so this is even more weird.

I have the following example code, tested on both Windows and Linux systems (so it's not a Windows problem), but tab completion simply doesn't work.

If I use the exact same code in Python 2 it does work on the Linux system (not on the Windows one though)

import cmd
class Shell ( cmd.Cmd ):    
    def do_test ( self, params ):
        print( 'test: ' + params )

    def do_exit ( self, params ):
        return True

    def do_quit ( self, params ):
        return True

if __name__ == '__main__':
    x = Shell()
    x.cmdloop()

Do you know why this happens, or what I can do, to make tab completion possible?

Upvotes: 7

Views: 14764

Answers (3)

luckydonald
luckydonald

Reputation: 6846

On Mac there is the Stand-alone GNU readline module.
You can get it with pip install gnureadline.
It has been tested with Python 2.6, 2.7, 3.2 and 3.3.

Upvotes: 0

hucqym
hucqym

Reputation: 41

I got it to work on windows after I installed the pyreadline module from here https://pypi.python.org/pypi/pyreadline/2.0

Upvotes: 4

Arthur Shipkowski
Arthur Shipkowski

Reputation: 3666

It actually works for me on Linux on both Python 2 and 3. However, my python setup was compiled with readline support, which is required for it to be automatic per the cmd documentation. I suspect your Linux Python 3 wasn't compiled with it.

Unfortunately, readline is Unix-specific. See python tab completion in windows for a discussion of other options on Windows.

Upvotes: 5

Related Questions