在python中使用Cmd.cmd框架测试一段时间后,我注意到一个问题,我不知道该怎么做。另外我相信在几个小时之前就可以使用它(或者我只是疯了),所以这更奇怪。
我有以下示例代码,在Windows和Linux系统上都经过测试(因此它不是Windows问题),但是标签完成根本不起作用。
如果我在Python 2中使用完全相同的代码,它可以在Linux系统上运行(但不能在Windows上运行)
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()
你知道为什么会发生这种情况,或者我能做些什么来使标签完成成为可能?
答案 0 :(得分:5)
它实际上适用于Linux上的Python 2和3。但是,我的python设置是使用readline支持编译的,这是cmd documentation所需的自动化所必需的。我怀疑你的Linux Python 3没有用它编译。
不幸的是,readline是特定于Unix的。有关Windows上其他选项的讨论,请参阅python tab completion in windows。
答案 1 :(得分:4)
答案 2 :(得分:0)
在Mac上有Stand-alone GNU readline module
你可以使用pip install gnureadline
获得它
它已经过Python 2.6,2.7,3.2和3.3的测试。