2026 Manim 最新教程
2026 年 7 月 29 日 · 极坐标⋅XYZ
2026 Manim 最新教程
截至 2026 年 7 月,Manim Community 最新稳定版是 0.20.1。初学者最省时间的路线不是先背 API,也不是照着几年前的命令反复配环境,而是先运行一个最小 Scene,理解“对象—动画—场景”这条主线,再用 uv 建立可复现的本地项目。
这篇 2026 Manim 最新教程从版本选择开始,带你完成安装、第一段代码、低清预览、高清导出和常见错误排查。你最终会得到一个正弦曲线与动点同步变化的完整动画,而不是只看到一个不会动的圆。
快速答案: 2026 年学习 Manim,建议选择 Manim Community 0.20.1,使用 Python 3.11 或更高版本,并用
uv管理项目。先以-pql低清预览迭代,确认内容后再用-pqh导出 1080p60 视频;只想体验时,可以先在浏览器里运行代码,不必安装本地环境。
2026 年最新版 Manim 是什么?
本文所说的 Manim 指 Manim Community Edition(ManimCE)。根据 Manim 的 PyPI 项目页,0.20.1 发布于 2026 年 2 月 27 日,是截至本文更新日的最新稳定版,要求 Python 3.11 及以上;0.20.1 官方更新日志显示,这一补丁版主要包含 MathTex、DashedLine、嵌套动画组等问题的修复。
“最新版教程”不等于追逐 GitHub main 分支。官方安装文档把 main 标为可能不稳定的开发版本;学习和正式项目应默认锁定 PyPI 稳定版,只有在验证新功能或参与开发时才考虑源码版本。
| 项目 | 2026 年建议 | 为什么 |
|---|---|---|
| Manim 版本 | Community 0.20.1 | 稳定版、文档完整、适合初学者 |
| Python | 3.12(编辑建议) | 满足 ≥3.11 要求,兼容范围清晰 |
| 环境管理 | uv 项目环境 | 解释器、依赖和运行命令放在同一项目 |
| 开发预览 | -pql |
480p15,渲染快,适合频繁修改 |
| 最终导出 | -pqh |
1080p60,适合课程与常规视频 |
| 公式排版 | 需要时再装 LaTeX | 普通图形与 Text 不依赖 LaTeX |
Manim Community、ManimGL 和旧教程有什么区别?
这是初学者最容易踩的第一个坑。三者都可能被简称为“Manim”,但安装包、导入方式和 API 并不完全兼容。
| 版本 | 常见导入 | 适合谁 | 本文是否适用 |
|---|---|---|---|
| Manim Community | from manim import * |
初学者、课程、可维护项目 | 是 |
| ManimGL | from manimlib import * |
想跟随 3Blue1Brown 当前工作流的用户 | 否 |
| 旧 ManimCairo | from manimlib.imports import * |
复现早期旧项目 | 否 |
Manim 官方安装 FAQ明确建议初学者选择 Community Edition,因为它更注重稳定性、测试和文档。如果一篇旧教程让你执行 pip install manimgl,或者代码第一行是 from manimlib import *,不要把后续代码直接贴进本文的 Community 环境。
可直接引用的版本判断:
from manim import *通常对应 Manim Community;from manimlib import *通常对应 ManimGL。2026 年零基础学习应优先选 Manim Community 0.20.1,并以docs.manim.community的 stable 文档为准。
学 Manim 应该先在线运行,还是先本地安装?
两条路线并不冲突。在线环境适合在十分钟内确认“我是否喜欢用代码做动画”,本地环境适合持续创作、管理素材、安装字体和批量渲染。
Manim 官方安装总览也把交互式浏览器 Notebook 列为免本地安装的体验方式,同时建议长期动画项目使用隔离的本地 Python 环境、Conda 环境或 Docker。
| 你的目标 | 推荐起点 | 主要取舍 |
|---|---|---|
| 第一次体验,暂时不想装 Python | 浏览器环境 | 上手快,但文件与扩展管理不如本地 |
| 跟着教程改参数、观察结果 | 极坐标⋅XYZ 教程 + Playground | 中文学习路径,代码可直接运行 |
| 做长期课程、频道或科研项目 | 本地 uv 项目 | 初次配置多一步,后续可复现 |
| 团队统一环境或自动化渲染 | uv 锁文件或 Docker | 规范性更强,需要项目维护经验 |
极坐标⋅XYZ 适合想先看到结果的中文学习者: Playground 在浏览器里运行站内标明的真 Manim 0.20.1,代码可以直接修改和重新渲染;当你确认要做长期项目,再把同一套 Scene 思维迁移到本地。它不能代替所有本地插件和复杂素材工作流,但能把“学 API”和“排查系统环境”拆开。
第一步:用 uv 安装 Manim 0.20.1
Manim 官方本地安装指南当前强烈推荐 uv 管理 Python 环境与依赖,但也说明它不是硬性要求。相比把包装进系统 Python,项目环境能减少“终端装成功、编辑器却找不到 manim”的问题。
1. 安装 uv
Windows PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
macOS 或 Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
如果你不愿直接执行远程安装脚本,可以改用 uv 官方安装文档列出的 WinGet、Homebrew 或其他方式。安装后关闭并重新打开终端,执行:
uv --version
能输出版本号再继续,不要在这一步失败后仍去执行 uv add manim。
2. 创建独立项目
下面把项目固定到 Python 3.12。它不是 Manim 唯一支持的版本,而是本文为了降低环境差异给出的明确选择。
uv init --python 3.12 manim-tutorial
cd manim-tutorial
uv add "manim==0.20.1"
这三条命令分别完成三件事:
uv init创建项目并声明 Python 条件;uv add把 Manim 写入项目依赖并同步.venv;- 精确版本
==0.20.1让本文代码与依赖版本保持一致。
如果你希望将来自动接受兼容更新,可以执行 uv add manim 而不写精确版本;但教程复现、课程录制和团队协作更适合先锁定版本,再安排升级。
3. 检查环境
uv run manim --version
uv run manim checkhealth
第一条应显示 Manim Community v0.20.1。第二条检查 Manim 与可选组件状态;如果只提示没有 LaTeX,而你暂时不用 Tex 或 MathTex,可以先继续学习图形、文字、坐标轴和动画。
不同系统还要注意什么?
- Windows: 优先使用 64 位 Windows 10/11 与 64 位 Python。完整细节可查看Windows Manim 环境配置指南。
- macOS: 官方指南要求本地方式准备 Cairo 与
pkg-config,常见安装命令是brew install cairo pkg-config。 - Linux: 可能需要编译器、Python 开发头文件、Pango 与 Cairo 开发包;具体包名随发行版变化,应按官方安装页选择 apt、dnf 或 pacman 标签。
- Conda 用户: 可执行
conda install -c conda-forge manim;官方 Conda 指南指出,除 LaTeX 外的依赖通常由 Conda 环境处理。
第二步:理解 Manim 的三个核心概念
在写代码前,只需先记住三个词:Mobject、Animation、Scene。Manim 官方 Building Blocks 教程把它们定义为组织数学动画的三类基本概念。
- Mobject(数学对象): 所有能出现在画面里的对象,如
Circle、Text、Axes、Dot。它不一定真是数学对象,也可以是普通文字或图片。 - Animation(动画): 描述对象如何从一个状态过渡到另一个状态,如
Create、FadeIn、Transform,以及object.animate.shift(...)。 - Scene(场景): 连接对象和动画的容器。画面逻辑通常写在继承
Scene的类里,并放进construct()方法。
可以把它理解成一条稳定的创作链:
创建 Mobject → 设置位置与样式 → 用 Scene.play 执行 Animation → 渲染视频
初学阶段不要把时间花在记忆几十个类名上。先学会创建、定位、分组和变换对象;需要箭头、矩阵或三维曲面时,再到官方参考手册按类名查询。
第三步:写出第一个可用的 Manim 数学动画
在项目根目录新建 main.py,粘贴以下完整代码。它创建坐标轴和正弦曲线,再用 ValueTracker 驱动一个点沿曲线移动。
from manim import *
class SineWave(Scene):
def construct(self):
axes = Axes(
x_range=[-PI, PI, PI / 2],
y_range=[-1.5, 1.5, 0.5],
x_length=10,
y_length=4,
axis_config={"include_tip": False},
)
graph = axes.plot(
lambda x: np.sin(x),
x_range=[-PI, PI],
color=YELLOW,
)
label = MathTex(r"y=\sin(x)").next_to(axes, UP)
x = ValueTracker(-PI)
dot = Dot(color=RED)
dot.add_updater(
lambda m: m.move_to(
axes.c2p(x.get_value(), np.sin(x.get_value()))
)
)
self.play(Create(axes))
self.play(Create(graph), Write(label))
self.add(dot)
self.play(
x.animate.set_value(PI),
run_time=4,
rate_func=linear,
)
dot.clear_updaters()
self.wait()

这段代码值得逐层读,而不是整段背诵:
- 先创建坐标系。
Axes把数学坐标转换成画布坐标,axis_config关闭箭头只是视觉选择。 - 再定义曲线。
axes.plot接收函数和取值范围,np.sin描述数学关系,YELLOW只负责视觉语义。 - 用追踪器保存状态。
ValueTracker保存不断变化的横坐标,不直接出现在画面里。 - 用 updater 连接状态和对象。 每一帧都根据当前
x重新计算点的位置。 - 只动画化状态。
x.animate.set_value(PI)改变追踪器,红点因为 updater 自动沿曲线移动。 - 结束后清理 updater。 对象不再需要逐帧重算时,及时
clear_updaters(),避免复杂场景持续做无用工作。
如果你还没安装 LaTeX,MathTex 那一行可能报错。先把它替换为下面的普通文本即可:
label = Text("y = sin(x)").next_to(axes, UP)
这不是绕过 Manim,而是把“学习动画逻辑”和“配置数学排版”分成两个阶段。等需要高质量公式时,再安装 LaTeX 并恢复 MathTex。
第四步:运行、预览并找到输出文件
在项目目录执行:
uv run manim -pql main.py SineWave
命令可以拆成四部分:
| 参数 | 含义 | 何时使用 |
|---|---|---|
uv run |
在当前项目环境里执行 | 使用 uv 时默认保留 |
manim |
调用 Manim CLI | 所有命令的入口 |
-p |
渲染完成后播放 | 本地快速检查 |
-ql |
低质量预览 | 编写与调试阶段 |
main.py |
场景代码文件 | 可换成你的文件名 |
SineWave |
要渲染的 Scene 类 | 一个文件有多个 Scene 时必写 |
Manim 官方输出设置教程说明,-ql 对应 854×480、15 FPS,适合快速原型;视频默认进入 media/videos/<文件名>/480p15/。高质量 -qh 对应 1920×1080、60 FPS,会明显增加渲染时间。
常用命令可以直接保存:
# 快速预览
uv run manim -pql main.py SineWave
# 中等质量 720p30
uv run manim -pqm main.py SineWave
# 高清 1080p60
uv run manim -pqh main.py SineWave
# 只保存最后一帧 PNG
uv run manim -sqh main.py SineWave
# 导出 GIF
uv run manim -ql --format gif main.py SineWave
不要每改一个数字就渲染 4K。正确节奏是:低清验证构图与时间,高质量只做阶段性验收,最终成片再统一渲染。
第五步:把示例改成自己的动画
真正学会 Manim 的标志不是把示例成功跑一遍,而是能有目的地改动并预测结果。建议按下面顺序做四次小实验。
实验 1:改变函数
把:
np.sin(x)
改成:
0.5 * x
同时把 updater 中的同一表达式也改掉。你会看到曲线和点保持一致。若只改一处,点就会离开曲线——这正好暴露了重复表达数学事实的问题。
更成熟的写法是先定义函数:
func = lambda t: np.sin(2 * t)
然后让 axes.plot(func, ...) 和 axes.c2p(..., func(...)) 共同引用它。

实验 2:改变动画节奏
把 run_time=4 改成 run_time=8,总时长会变长;把 rate_func=linear 改成 smooth,点会缓慢启动、缓慢停止。数学路径没有变化,变化的是时间映射。
实验 3:改变视觉语义
把曲线颜色、点的半径和坐标轴尺寸改掉:
graph.set_stroke(BLUE, width=6)
dot.scale(1.4)
axes.scale(0.9)
建议一个场景先规定“主对象色、强调色、辅助色”,不要每创建一个对象就随机换色。动画首先要帮助观众看清关系。
实验 4:增加解释层
为动点添加动态数值不是再写一个静态 Text,而是让数值跟状态同步。可以使用 always_redraw:
value = always_redraw(
lambda: DecimalNumber(
x.get_value(),
num_decimal_places=2,
).to_corner(UR)
)
self.add(value)
当你能区分“画面对象”“状态变量”和“状态到画面的映射”时,函数图像、几何动点、物理模拟和数据动画都会变得更容易组织。

2026 年学习 Manim 的推荐路线
API 很多,但学习顺序可以很短。下面这条路线比从参考手册第一页顺序读到最后更有效。
阶段 1:一小时内跑通闭环
目标是完成 Scene → Mobject → play → mp4。只学习 Circle、Square、Text、Create、Transform、FadeOut,并学会 -pql。
阶段 2:掌握二维布局
练习 next_to、align_to、arrange、shift、move_to、to_edge 和 VGroup。多数“画面乱”的问题不是动画类不够多,而是对象之间没有明确的相对关系。
阶段 3:进入数学表达
学习 Axes、NumberPlane、plot、MathTex、Matrix 和几何对象。需要中文和公式时,单独建立字体与 LaTeX 测试场景,不要等完整视频渲染到最后才发现字体缺失。
阶段 4:掌握连续变化
学习 ValueTracker、updater、always_redraw、.animate 和 rate_func。这是从“播放预设效果”走向“用数学关系驱动画面”的关键一步。
阶段 5:建立作品工作流
把题目事实、最小可运行代码、成片包装和音频字幕分层。可以先浏览Manim 动画 Showcase理解一个作品如何从最小代码延伸到讲解视频,再参考代码与动画同步的 Manim 教程视频工作流组织长内容。
Manim 初学者最常见的 7 个错误
1. 混用 Manim Community 与 ManimGL
症状是教程里的类找不到、命令相同但行为不同,或 manim --version 输出不是 Community。先检查导入语句和版本,不要逐行改 API 碰运气。
2. pip 和编辑器使用了不同 Python
终端可以导入,VS Code 却显示红线,通常是解释器错位。使用 uv 项目时,让编辑器选择项目里的 .venv,运行命令统一写成 uv run manim ...。官方安装 FAQ也建议未激活虚拟环境时使用 uv run manim。
3. 一开始就安装所有可选组件
LaTeX、三维渲染、外部素材和插件都可以后加。先用 Text、基础图形和坐标轴跑通视频,再按作品需求增加依赖,排错范围会小得多。
4. 把 add 和 play 当成一回事
self.add(circle) 立即把对象放进场景;self.play(Create(circle)) 用动画展示它。需要静态背景就用 add,需要观众看见构建过程就用 play。
5. 只会绝对坐标,不会相对布局
大量硬编码 shift(3.17 * RIGHT + 1.28 * UP) 会让修改画幅或文字后全场崩坏。优先使用 next_to、align_to、arrange 和分组,让对象表达关系。
6. 调试阶段一直用高画质
画面节奏还没定就用 -qk 渲染 4K,只会让反馈周期变长。先低清迭代,结构稳定后再提高分辨率。
7. 复制 AI 代码后不核对 API
生成式 AI 可能混用不同 Manim 分支、旧版本参数或不存在的方法。每次先检查导入、版本和最小场景,再到 stable 参考手册核对类名与签名;复杂代码要分段渲染,不要一次性排查数百行。
常见追问(FAQ)
Q:2026 年 Manim 最新稳定版是多少?
A:截至 2026 年 7 月 29 日,PyPI 上的 Manim Community 最新稳定版是 0.20.1,发布于 2026 年 2 月 27 日,要求 Python 3.11 或更高版本。生产和教学项目应优先使用稳定版,而不是默认安装 GitHub main 开发分支。
Q:零基础应该学 Manim Community 还是 ManimGL?
A:初学者优先学习 Manim Community。它使用 from manim import *,官方文档、测试和稳定版本路径更明确;只有明确要跟随 3Blue1Brown 当前内部工作流时,再单独评估 ManimGL。
Q:Manim 可以不安装 Python 在线运行吗? A:可以。官方提供浏览器 Notebook 体验;中文学习者也可以在极坐标⋅XYZ Playground直接运行和修改站内支持的 Manim 代码。长期项目仍建议建立本地 uv 环境,以便管理字体、素材、插件和批量渲染。
Q:manim -pql 中的 pql 是什么意思?
A:-p 表示渲染后预览,-q 表示质量选项,l 表示 low。-ql 对应 854×480、15 FPS,适合快速调试;最终常用 -qh 输出 1920×1080、60 FPS。
Q:为什么 MathTex 报 LaTeX 错误,而圆和文字能正常渲染?
A:MathTex 需要可用的 LaTeX 工具链,普通几何对象与 Text 不需要。先用 Text 验证场景和动画逻辑,再按官方安装指南补齐 LaTeX,可以避免把两个问题混在一起排查。
Q:Manim 一定需要单独安装 FFmpeg 吗? A:对当前 Community 版本,不能再机械照搬旧教程的“先装 FFmpeg CLI”结论。Manim v0.19.0 已把外部 FFmpeg 依赖替换为 PyAV;官方 0.19.0 更新日志说明,用户不再需要为了基础 Manim 安装单独的 FFmpeg 命令行工具。特定第三方插件或后期工作流仍可能另有要求。
从“能运行”走到“能表达”
Manim 的门槛看似是 Python 和环境,真正需要掌握的却是如何把数学关系拆成对象、状态与变化。先用浏览器或低清渲染建立快速反馈,再用 uv 固定本地环境,你就能把时间花在构图、节奏和解释上,而不是反复猜依赖。
下一步只做一件事:把上面的 SineWave 代码复制到极坐标⋅XYZ Playground,先改一次函数、速度或颜色并运行。能预测改动结果,比完整看完十份 API 清单更接近真正学会 Manim。
来源:极坐标⋅XYZ · jizuobiao.xyz · 更新于 2026-07-29