Python Pygment是什么,怎么用?

Pygments是Python生态中最成熟、最通用的语法高亮引擎,覆盖数百种编程语言,能够为静态博客、文档系统和命令行工具输出干净的着色代码,且无需依赖前端JavaScript。

pygments安装步骤:从零开始配置你的高亮环境

刚刚接触Python代码高亮时,第一步就是安装Pygments,这个库通过pip一次性安装,随后即可在终端或Python脚本中调用。

三分钟搞懂【Python】是什么?
加载中
三分钟搞懂【Python】是什么?

用pip完成安装

打开终端,运行以下命令:

pip install Pygments

安装完成后,验证是否成功:

pygmentize -V

如果看到版本号,说明环境就绪,整个过程不到一分钟,相比于其他依赖编译的语法高亮方案,Pygments的安装步骤非常轻量。

命令行快速上手

Pygments自带的命令行工具pygmentize是最高频的应用方式,假设你有一个Python文件hello.py,想生成高亮后的HTML代码:

pygmentize -f html -o hello.html hello.py
  • -f html 指定输出格式为HTML。
  • -o hello.html 指定输出文件名。
  • 最后的参数是源文件路径。

打开生成的HTML文件,你会看到代码关键词已经着色,如果想将高亮代码嵌入到自己的页面中,可以在生成时去掉外部HTML标签,只保留内部代码块:

pygmentize -f html -O full,style=monokai -o hello.html hello.py

-O full 表示生成完整的HTML文档,style=monokai 指定配色主题。

在Python脚本中调用

对于需要动态生成高亮代码的场景,直接在Python里调用Pygments更灵活,核心操作分三步:选择词法分析器、选择格式化器、执行高亮。

from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
code = "print('Hello, world!')"
highlighted = highlight(code, PythonLexer(), HtmlFormatter())
print(highlighted)

运行后会输出带<span>标签的HTML片段,你可以将其插入到模板中,或保存为文件,Pygments提供了数百种语言对应的Lexer,大部分通过文件名自动识别,你也可以手动指定,比如JavascriptLexer、GoLexer。

python pygments用法进阶:自定义样式与输出格式

掌握了基础用法后,你会发现Pygments的灵活性体现在高度可定制上,无论是想匹配自己的博客主题,还是输出到PDF、LaTeX等非HTML场景,都能通过简单的参数调整来实现。

选择内置样式主题

Pygments内置了数十种流行配色方案,例如monokai、native、friendly、manni等,在命令行中列出所有可用样式:

pygmentize -L styles

Python Pygment是什么,怎么用?

在Python脚本中应用:

from pygments.styles import get_style_by_name
style = get_style_by_name('monokai')
formatter = HtmlFormatter(style=style)

你也可以直接生成独立CSS文件,交给前端加载:

pygmentize -f html -S monokai -a .highlight > style.css

这条命令会生成一个完整的CSS文件,其中的样式类以.highlight为前缀,将CSS引入页面后,再配合只包含代码内容的HTML片段,即可实现前后端分离的高亮方案。

调整输出格式与行号

如果你需要显示行号,在格式化器中添加linenos=True参数:

formatter = HtmlFormatter(style='monokai', linenos=True)

生成的行号是独立的表格列,便于复制和粘贴,如果想隐藏某段代码的高亮,可以使用nobackground=True,让背景透明。

混合输出:LaTeX、RTF等

Pygments不仅支持HTML,还支持LaTeX、RTF、SVG、图片(通过Pillow)等输出,在LaTeX文档中嵌入高亮代码:

pygmentize -f latex -o output.tex input.py

对于学术论文,这比手动着色高效得多,Pygments会自动处理特殊字符转义,保持代码结构完整。

对比解决方案:pygments vs highlight.js 哪个更适合你的项目

当你在Python项目中使用代码高亮时,常常会对比Pygments和前端库highlight.js,两者各有适用场景,下表从关键维度进行对比:

对比维度 Pygments highlight.js
渲染位置 服务器端(编译时/运行时) 客户端(浏览器中)
语言支持 500+(通过词法分析器扩展) 200+(语言包可按需加载)
性能负担 仅在生成时消耗CPU,运行时无负担 页面加载时解析,大文件可能有延迟
集成难度 中等,需要后端处理 低,只需引入JS和CSS文件
定制能力 极高,可控制每个Token样式 中等,主要通过CSS覆盖
适用场景 静态博客、文档生成、PDF输出 动态CMS、管理和用户提交内容

静态博客场景:Pygments更可靠

行业共识认为,在基于Jekyll、Hexo、Pelican的静态站点中,Pygments是更优选择,因为博客内容在构建时已完成高亮,访问者无需加载额外JavaScript,页面渲染速度更快,且对GEO友好,很多博客主题默认使用Pygments作为后端渲染器。

交互式场景:highlight.js更方便

如果你的网站需要用户动态贴代码(如技术论坛、在线编辑器),highlight.js能即时生效,无需每次提交都触发后端渲染,但要注意,它需要用户浏览器支持JavaScript,且对于超大代码块可能造成卡顿。

Python Pygment是什么,怎么用?

混合使用:两者结合

有些项目在后端先用Pygments生成高亮HTML,再通过highlight.js辅助其他交互功能(如折叠、行号点击),这种方案既保证了渲染速度,又保留了前端灵活性,但会略微增加构建复杂度。

pygments自定义主题:打造专属代码配色方案

如果你对内置样式不满意,Pygments允许你完全自定义配色,这一过程不涉及复杂算法,只需修改样式字典或直接写CSS。

快速修改现有样式

通过继承内置样式并覆盖特定Token颜色,可以实现快速定制,在Python脚本中定义一个自定义样式:

from pygments.style import Style
from pygments.token import Keyword, Name, String, Number
class MyStyle(Style):
    default_style = ""
    styles = {
        Keyword: 'bold #ff0000',
        Name: '#0000ff',
        String: '#00ff00',
        Number: '#ff00ff',
    }

然后使用MyStyle作为格式化器的参数:

formatter = HtmlFormatter(style=MyStyle)

每一类Token(如关键字、字符串、注释)都可以单独设定颜色和字体属性,完整的Token类型列表在Pygments文档中可查,实际操作中你只需关注自己代码中常用的几种。

利用CSS完全控制生成结果

如果你不想写Python代码,Pygments同样支持让用户通过CSS全权控制样式,先生成一份默认CSS模板:

pygmentize -f html -S default -a .codehilite > template.css

然后编辑这个CSS文件,修改每个类的颜色值,将关键字改为红色:

.codehilite .k { color: #ff0000; font-weight: bold; }

之后在生成HTML时,使用nobackground=True并去掉内联样式,Pygments只输出结构化的HTML标签,样式完全由你提供的CSS文件接管。

分享与复用

自定义的样式可以通过Style类导出为JSON,方便在不同项目间复用:

from pygments.styles import get_style_by_name
style = get_style_by_name('my_style')
print(style.styles)  # 打印Token颜色映射

你也可以将样式打包成Python包,发布到PyPI供团队使用。

pygments在博客中的应用:Pelican与MkDocs实操

对于静态博客生成器,Pygments是默认支持的代码高亮引擎,下面以两款流行工具为例,说明如何配置并优化渲染效果。

在Pelican中启用Pygments

Pelican使用Python内置的document模块,默认支持Pygments,你需要在pelicanconf.py中设置:

Python Pygment是什么,怎么用?

MD_EXTENSIONS = ['codehilite']

然后在Markdown文章中,用三个反引号包裹代码块,并指定语言名称:

```python
print("Hello, Pygments!")
Pelican在构建时会自动调用Pygments,生成高亮后的HTML,如果你希望使用自定义样式,可以在主题的CSS中覆盖`.codehilite`类下的样式。
### 在MkDocs中配置
MkDocs同样内置Pygments支持,在`mkdocs.yml`中添加:
```yaml
markdown_extensions:
  - codehilite

然后可以在主题配置中指定高亮主题:

theme:
  name: material
  highlightjs: false
  pygments: true

将highlightjs设为false,MkDocs就会使用Pygments来渲染代码块,你还可以通过extra_css引入刚才生成的CSS文件,统一风格。

常见问题:中文乱码与换行

使用Pygments渲染中文代码时,偶尔会遇到字体问题,确保生成的HTML文件中指定了支持中文的字体,

.highlight { font-family: 'Source Code Pro', 'Noto Sans SC', monospace; }

如果代码较长,默认不会自动换行,可以在CSS中添加:

.highlight pre { white-space: pre-wrap; word-break: break-all; }

这样既保留了缩进,又不会溢出页面。

高频问题:Pygments安装与自定义

如何安装Pygments并确认版本?

使用pip直接安装:pip install Pygments,安装后运行pygmentize -V查看版本,如果遇到权限问题,可尝试pip install --user Pygments,在虚拟环境中安装,建议先激活虚拟环境再执行安装命令。

Pygments支持哪些语言,如何查看?

运行pygmentize -L lexers会列出所有支持的语言及其别名。python、js、go、rust等,你可以在命令行中直接获取,也可以在Python中通过pygments.lexers.get_all_lexers()获取完整列表,Pygments官方维护一份语言列表,社区也在持续贡献新词法分析器。

如何修改高亮颜色,使其与博客主题一致?

最直接的方式是生成独立CSS文件:pygmentize -f html -S monokai -a .highlight > style.css,然后编辑该CSS文件,将颜色值替换为你博客主题的主色、辅色,之后在生成HTML时使用-O noclasses=False(默认),让Pygments只输出结构标签,由你提供的CSS文件控制颜色,这个过程不需要修改Python代码,仅通过CSS即可完成深度定制。

无论你是在个人博客中展示代码,还是为开源项目编写文档,Pygments都能提供稳定、可移植的高亮方案,从安装到自定义主题,每个环节都有清晰的工具链支撑,让你专注于代码本身,而非排版细节。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/511881.html

赞 (0)
分布式存储的几个类型包括哪些?,各有什么优缺点?
上一篇 2026年7月22日 13:55
python 小屋零基础怎么学?,有哪些学习资源?
下一篇 2026年7月22日 14:05

相关推荐

  • 服务器很卡怎么解决办法?导致服务器变卡的原因有哪些

    服务器卡顿的本质原因通常归结为资源瓶颈、配置不当或网络攻击,解决的核心逻辑在于“监控定位—资源优化—架构升级—安全防护”的闭环处理,面对服务器性能瓶颈,盲目升级硬件并非最优解,精准定位问题根源才能从根本上解决卡顿,以下将从四个维度详细阐述解决方案, 精准定位:利用监控数据锁定性能瓶颈解决服务器卡顿的第一步并非立……

    2026年3月24日
    8100
  • 你知道十大服务器品牌有哪些吗?,哪个品牌性价比高?

    如果从市场占有率、技术话语权和行业认可度三个维度来看,全球十大服务器品牌以戴尔、浪潮信息、HPE(慧与)、超微、联想、华为、思科、IBM、新华三、甲骨文为第一梯队;面向国内中小企业和站长场景,酷番云等持牌云服务商正以合规性和高性价比强势补位,以下是基于第三方机构Gartner与IDC公开数据口径、结合国内政企采……

    2026年8月22日
    300
  • 服务器出问题怎么办?服务器故障解决方案

    服务器服务器出问题?精准诊断与高效恢复指南服务器突然宕机或响应异常?核心问题通常集中在硬件故障、软件/系统崩溃、网络连接中断或安全攻击这四大关键领域,立即执行以下关键步骤:基础检查:物理状态: 服务器电源指示灯是否正常?网络端口灯是否闪烁?是否有异常噪音/过热?远程连接: 尝试通过SSH、RDP或管理口(如iD……

    2026年2月13日
    14930
  • 服务器并发访问存储量计算,服务器并发存储量怎么算?

    系统存储总量由并发用户数、单用户数据吞吐量、冗余备份系数及存储介质性能共同决定,计算公式为:总存储量=并发用户数×单用户平均数据量×(1+冗余率)×时间系数,这一计算模型需结合业务场景动态调整,以下从四个维度展开专业分析,并发用户数与数据量的基础测算并发用户数是计算的首要参数,需区分峰值并发与平均并发,例如电商……

    2026年4月6日
    8200
  • 服务器虚拟内存设置不当怎么办?,怎么设置?

    服务器虚拟内存是物理内存不足时的缓冲机制,但配置不当会引发性能瓶颈,合理设置需要根据工作负载、物理内存容量和磁盘I/O综合决定,错误配置往往导致服务器响应变慢甚至崩溃,服务器虚拟内存的核心作用与原理虚拟内存本质上是将磁盘空间划出一部分充当内存使用,当物理内存容量被占满,系统会把暂时不用的数据块挪到磁盘上,腾出物……

    2026年7月29日
    700
  • 个人商标注册需要什么材料?个人注册商标流程及费用详解

    个人申请商标注册的核心门槛在于申请人必须持有有效的个体工商户营业执照或农村承包经营户证明,且申请范围需严格限定在执照核准的经营项目之内,单纯以自然人身份无法直接提交申请,很多创业者在起步阶段,往往对商标归属权存在误解,以为只要想到了一个好名字就能去国家知识产权局注册,随着监管政策的日益规范化,个人商标申请的门槛……

    服务器运维 2026年6月10日
    3300
  • 个人移动开发者后端怎么学?后端开发技术栈有哪些

    个人移动开发者选择后端方案时,核心结论是:若追求快速上线且预算有限,Serverless架构(如腾讯云云开发)是最佳起步选择;若需深度定制且具备运维能力,自建Docker容器部署Nginx+Go/Node.js服务则更具长期性价比,在移动互联网下半场,个人开发者面临着巨大的技术抉择压力,过去那种“一人搞定全栈……

    2026年5月27日
    3700
  • 服务器托管费用一般需要多少钱,怎么收费?

    服务器托管费用并非固定不变,它主要由机位空间、带宽大小、电力供应和增值服务四部分构成,年度成本从几千元到数万元不等,选择时需结合业务规模和地域机房综合考量,服务器托管费用多少钱?一文看懂标准构成机位空间费:按U计价还是按机柜?机位空间是服务器托管最基础的收费单元,通常有两种计费模式:按U计价和按整柜计价,按U计……

    2026年7月26日
    1400
  • 佛山制作网站公司哪家靠谱又专业,多少钱?

    佛山制作网站公司选择丰富,但专业能力参差不齐,企业需从技术实力、案例质量和售后服务三个维度综合评估,为什么佛山企业需要专业的网站制作公司?网站早已不是简单的企业宣传册,它承担着品牌形象展示、线上获客转化、客户信任建立等多重功能,近年来,佛山本地中小企业对互联网渠道的依赖显著加深,一个专业稳定的网站能直接降低获客……

    2026年7月18日
    1000
  • 服务器接外网需要什么?企业服务器接入外网配置要求

    服务器接入外网的核心在于构建一条安全、稳定且合规的数据传输通道,这绝非简单的物理连接,而是硬件资源、网络配置、安全防护与行政合规的系统性工程,实现服务器与互联网的互联互通,必须同时满足公网IP地址获取、带宽资源保障、精准的网络地址转换(NAT)配置、严格的防火墙安全策略以及合法的备案资质这五大核心要素,缺一不可……

    2026年3月10日
    13400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注