7

在 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()

你知道为什么会发生这种情况,或者我能做些什么来使标签完成成为可能吗?

4

3 回答 3

5

它实际上适用于我在 Python 2 和 3 上的 Linux 上。但是,我的 python 设置是使用 readline 支持编译的,这是根据cmd 文档自动运行所必需的。我怀疑你的 Linux Python 3 没有用它编译。

不幸的是,readline 是 Unix 特有的。有关Windows 上其他选项的讨论,请参阅windows 中的 python 选项卡完成。

于 2010-02-12T17:58:25.093 回答
4

从这里https://pypi.python.org/pypi/pyreadline/2.0安装 pyreadline 模块后,我让它在 Windows 上工作

于 2013-06-14T23:25:18.557 回答
0

在 Mac 上有独立的 GNU readline 模块
你可以得到它pip install gnureadline
它已经使用 Python 2.6、2.7、3.2 和 3.3 进行了测试。

于 2015-12-17T21:34:09.097 回答