KeyError:使用trepan3k时为“ darkblue”

时间:2019-08-02 09:33:18

标签: python pygments trepan

我用pip3 install trepan3k安装了trepan3k,并且想用trepan3k main.py调试文件,但出现此错误:

Traceback (most recent call last):
  File "/usr/local/bin/trepan3k", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/trepan/cli.py", line 212, in main
    normal_termination = dbg.run_script(mainpyfile)
  File "/usr/local/lib/python3.7/site-packages/trepan/debugger.py", line 217, in run_script
    exec(compiled, globals_, locals_)
...
  File "/usr/local/lib/python3.7/site-packages/pygments/formatters/terminal.py", line 101, in format
    return Formatter.format(self, tokensource, outfile)
  File "/usr/local/lib/python3.7/site-packages/pygments/formatter.py", line 95, in format
    return self.format_unencoded(tokensource, outfile)
  File "/usr/local/lib/python3.7/site-packages/pygments/formatters/terminal.py", line 126, in format_unencoded
    outfile.write(ansiformat(color, line.rstrip('\n')))
  File "/usr/local/lib/python3.7/site-packages/pygments/console.py", line 68, in ansiformat
    result.append(codes[attr])
KeyError: 'darkblue'
Uncaught exception. Entering post-mortem debugger...
trepan3k: That's all, folks...

这会在macOS Mojave和Ubuntu 18.04上发生。发生了什么事,我可以用trepan进行调试吗?

1 个答案:

答案 0 :(得分:1)

将trepan3k升级到我刚刚发布的version 0.8.9,我想你会没事的。

更长的故事。抱歉,我之前没有看到。我自己是trepan3k的大用户,前一段时间我已经注意到了这一点,并通过使用以前安装的trepan3k版本来解决它。由于我没有其他人注意到这一点,因此我不打算进行调查,更不用说解决它了。

然后在某个时候我有一些空闲时间,并做了调查。更长的答案是2.2.0之后似乎对Pygments进行了更新,该更新不兼容且颜色名称不同。

我希望我能更详细地了解Pygments中的情况。我怀疑这与使用减少的颜色名称集和处理深色和浅色背景有关,这种方式在您在深色和浅色之间切换时不会使事情变得混乱。

如果那里有人知道并且会阐明我将不胜感激。如果您确切知道如何在2.2.0之后将Pygments更改为版本,则可以获得加分。

trepan用于处理Pygments的相关代码为https://github.com/rocky/python3-trepan/blob/master/trepan/lib/format.py

我必须为RsT编写一个自定义格式化程序以进行控制台。我已经将其提供给了Pygments社区,但是他们决定不应该将其包含在Pygments中,但是可以按原样在trepan3k中使用它。

这是调试器中发现的一些额外工作的一个小示例,这些工作不在其他调试器中,以支持更好的用户体验。拒绝显示确切位置是另一个示例。但这当然意味着,当软件包进行不兼容的升级时,破损的可能性更大。

最后两个要点。

  1. 如果trepan3k中存在错误,请在问题跟踪器https://github.com/rocky/python3-trepan/issues/new中报告该错误。我比在stackoverflow问题上更可能看到此问题。
  2. 如果还没有,请对该项目进行投票。我使用github评分来帮助指导我了解空闲时间在做什么。 (最近我已经越来越少了)。