不久前,我开始在我的一个程序中使用它。从那时起,每当我在运行 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>Run Code Online (Sandbox Code Playgroud)
在你问之前,我将 python 安装到目录“C:\SP_CI_PROGRAMS\Languages\Python\3.6.1”。它可以从路径变量访问。此外,我设计的放置在目录中的任何脚本也可以从路径变量访问(包括使用 cmd 模块进行 python 的脚本)。
这似乎不是一个紧迫的问题,尤其是看到我只能输入 4 个空格,但是使用制表符是我特别习惯的东西,第二次我输入制表键,我在前一个块中写的任何内容打印回溯时立即丢失。拜托,有人可以告诉我如何解决这个问题。
编辑:这仅在 python 解释器中。在正在运行的程序或其他东西中键入选项卡不会造成任何问题。
Yed*_*rab 10
C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\Lib\rlcompleter.pycode C:\SP_CI_PROGRAMS\Languages\Python\3.6.1\Lib\rlcompleter.pyline 80哪个回溯告诉我们79像波纹管一样更改这些行(开始),它会起作用...
if _readline_available: ## The old one is ##
if hasattr(readline, 'redisplay'): # if _readline_available:
readline.insert_text('\t') # readline.insert_text('\t')
readline.redisplay() # readline.redisplay()
return '' # return ''
...
Run Code Online (Sandbox Code Playgroud)
不要忘记重新启动您的python终端
在Github 上看到的 Windows 机器似乎是一个持续存在的问题。解决方法似乎是卸载pyreadline软件包。
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |