Python追踪信息无语法高亮 - pygments

0 投票
1 回答
1589 浏览
提问于 2025-04-18 00:15

我在一个博客上使用的是 pygments 1.6 版本,主要用来做语法高亮(通过 CodeHilite 插件来处理 markdown)。

对于 Python 代码的高亮效果非常不错。不过,如果我尝试用 pytb 这个工具来高亮 Python 的错误追踪信息,效果就让人失望了。

我可以确认这个工具是可用的:

for lexer in pygments.lexers.get_all_lexers():
    print lexer

........
('Python Traceback', ('pytb',), ('*.pytb',), ('text/x-python-traceback',))
.......

但是它的效果和演示的完全不一样:http://pygments.org/demo/61075/?style=native

相反,它的高亮效果只是简单的白色字体。

这里有一篇相关的博客文章

编辑

我的代码:

<div class="codehilite">
    <pre>
        <span class="go">TypeError: Error when calling the metaclass bases</span>
        <span class="go"> class _AsyncDeviceInquiry does not correctly implement protocol IOBluetoothDeviceInquiryDelegate: the signature for method deviceInquiryComplete:error:aborted: is v@:@iB instead of v@:@iZ</span>
    </pre>
</div>

演示中的代码

<div class="syntax">
    <pre>
        :
        <span class="nc">ImportError</span>
        :
        <span class="n-Identifier">('No module named TMPD54~1.049d4d1330606d5fa968586a2810c4fc', '[DimShuffle{x}(TensorConstant{2.0})]')</span>
    </pre>
</div>

1 个回答

-1

我猜Pygments工作得很好。建议你查看一下你生成的markdown输出的源代码,以及你提到的那个示例的源代码。我怀疑这两者中都会有很多标签,用来标记不同的部分。

当然,如果你不提供你实际得到的输出,我只能猜测。但如果我没猜错的话,你需要提供CSS来给这些标记添加样式。Python-Markdown并不会为你提供CSS,这个责任在你自己。如果我没记错的话,Pygments有一个命令可以生成CSS文件。建议你查看一下他们的文档。

举个例子,你提到的那个示例允许你切换不同的主题。Pygments生成的实际HTML输出是不会改变的,只有不同的CSS文件被用来给相同的标记添加样式。

撰写回答