views:

282

answers:

1

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?

+1  A: 

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 http://stackoverflow.com/questions/1081405/python-tab-completion-in-windows for a discussion of other options on Windows.

Arthur Shipkowski