使用 Python 的 Cmd.cmd 完成制表符
在使用 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()
你知道为什么会发生这种情况吗?或者我可以做什么来使制表符补全成为可能?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它实际上对我在 Linux 上的 Python 2 和 3 都有效。但是,我的 python 设置是使用 readline 支持进行编译的,这是根据 cmd 文档。我怀疑你的 Linux Python 3 没有用它编译。
不幸的是,readline 是 Unix 特定的。有关 Windows 上其他选项的讨论,请参阅 Windows 中的 python Tab 补全。
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.
从这里安装 pyreadline 模块后,我让它在 Windows 上工作 https://pypi.python。 org/pypi/pyreadline/2.0
I got it to work on windows after I installed the pyreadline module from here https://pypi.python.org/pypi/pyreadline/2.0
在 Mac 上有独立的 GNU readline 模块。
您可以通过
pip install gnureadline
获取它。它已使用 Python 2.6、2.7、3.2 和 3.3 进行了测试。
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.