不久前,我开始在我的一个程序中使用它。从那以后,每当我在运行python的控制台(cmd.exe示例)上键入tab键时,我都会得到一个readline内部错误。完整的回溯如下(注意,我没有在这个上下文中导入cmd模块,甚至没有导入使用它的脚本。我只是启动了python,按下tab键,瞧,一个异常):
<pre>
Traceback (most recent call last):
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\console\console.py", line 768, in hook_wrapper_23
res = ensure_str(readline_hook(prompt))
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\rlmain.py", line 571, in readline
self._readline_from_keyboard()
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\rlmain.py", line 536, in _readline_from_keyboard
if self._readline_from_keyboard_poll():
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\rlmain.py", line 556, in _readline_from_keyboard_poll
result = self.mode.process_keyevent(event.keyinfo)
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\modes\emacs.py", line 243, in process_keyevent
r = self.process_keyevent_queue[-1](keyinfo)
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\modes\emacs.py", line 286, in _process_keyevent
r = dispatch_func(keyinfo)
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\modes\basemode.py", line 257, in complete
completions = self._get_completions()
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\lib\site-packages\pyreadline\modes\basemode.py", line 200, in _get_completions
r = self.completer(ensure_unicode(text), i)
File "C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\Lib\rlcompleter.py", line 80, in complete
readline.redisplay()
AttributeError: module 'readline' has no attribute 'redisplay'
</pre>
在你问之前,我已经把python安装到了“C:\SP_CI_PROGRAMS\Languages\Python\3.6.1”目录下,可以通过路径变量访问它,我设计的任何脚本也可以通过路径变量访问(包括使用python的cmd模块的脚本)。
这似乎不是一个紧迫的问题,特别是看到我可以只输入4个空格,但使用制表符是我已经变得特别习惯,第二次我输入制表符键,任何我写在前一个块是立即丢失,因为追溯打印。请,有人能告诉我如何解决这个问题。
编辑:这只是在python解释器中,在一个运行的程序中键入tab或者其他什么都不会造成任何问题。
6条答案
按热度按时间6ie5vjzr1#
针对Windows 10的测试解决方案(2020年1月17日)
C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\Lib\rlcompleter.py
code C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\Lib\rlcompleter.py
line 80
,回溯告诉我们79
),如下图所示,它将工作不要忘记重新启动python终端
vecaoik12#
正如在Github上看到的那样,这似乎是Windows机器的一个持续问题。解决办法似乎是卸载
pyreadline
包。zujrkrfu3#
停止使用pyreadline。它已经被放弃了。你看到的是一个known issue,但是除非有人接管pyreadline的开发,否则它不太可能被修复。
5n0oy7gb4#
pyreadline可以通过在命令提示符下键入
pip uninstall pyreadline
来卸载。我也遇到过同样的问题,但卸载pyreadline后,Tab
键对我来说是有效的。注:要查看已安装的软件包,请在命令提示符下键入
pip list
。pb3s4cty5#
如果你没有权限的机器上。你将无法做这些卸载解决方案。
因此,设置
completer
函数。它将解决问题,不会有奇怪的行为。但自动完成将不再工作。如果你希望它工作,看看文档并实现它。46scxncf6#
对我起作用的(而其他人由于某种未知的原因没有起作用)是以下几点:
第78行: