开发者

Tab completion with Python's Cmd.cmd

开发者 https://www.devze.com 2022-12-14 09:53 出处:网络
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 e

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 syst开发者_运维知识库ems (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?


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.


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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号