ManimGL 安装实战指南:从系统依赖到源码级可编辑安装
本文围绕仓库文档 安装指南 展开,讲解 ManimGL(3Blue1Brown 版 manim,PyPI 包名为 manimgl)在 Windows、Linux、macOS 三大平台以及 Anaconda 环境下的完整安装流程。读完后,你能够独立完成系统依赖(FFmpeg、LaTeX、Pango)与 Python 依赖的安装,通过 pip install -e . 从源码可编辑安装本仓库,并用一条命令验证安装结果。
前置要求与系统依赖
安装文档明确声明:Manim 需要 Python 3.10 或更高版本。这一点在仓库的 setup.cfg 中得到双重印证:python_requires = >=3.10,且 classifiers 中标注了 Python 3.10 ~ 3.13 的支持范围。
文档列出的系统级依赖如下:
| 依赖 | 是否必需 | 说明 |
|---|---|---|
| FFmpeg | 必需 | 用于将渲染帧编码为视频文件 |
| OpenGL | 必需 | 通过 Python 包 PyOpenGL 提供,GPU 加速渲染的基础 |
| LaTeX | 可选 | 仅在使用 LaTeX 数学公式排版(Tex / TexText 等)时需要 |
| Pango | 仅 Linux | 文本渲染依赖,需连同开发头文件一起安装 |
其中 Pango 之所以与平台强相关,是因为 Python 侧的文本渲染依赖 manimpango 这一 C 扩展绑定包,该约束可见于 requirements.txt 中的 manimpango>=0.6.0 条目(setup.cfg 的 install_requires 与之完全一致)。
安装 FFmpeg
文档给出的建议是:按各自平台的包管理器安装后,执行 ffmpeg -version 验证是否成功。文档原文提供的各平台命令为:
Windows(Chocolatey):
choco install ffmpeg
Linux(APT):
sudo apt update
sudo apt install ffmpeg
macOS(Homebrew):
brew install ffmpeg
FFmpeg 与 manim 的关联可以从命令行参数中看出:manimlib/config.py 中定义了 --vcodec("Video codec to use with ffmpeg")与 --pix_fmt("Pixel format to use for the output of ffmpeg, defaults to yuv420p")两个参数,它们最终都会透传给 FFmpeg 完成视频编码——这就是 FFmpeg 为硬性依赖的原因。
方式一:直接通过 pip 安装
最简单的方式是不克隆仓库、直接从 PyPI 安装发行版:
# Install manimgl
pip install manimgl
# Try it out
manimgl
需要注意包名区分:本仓库对应的 PyPI 包是 manimgl(setup.cfg 中 name = manimgl),而不是社区版 manim 的 manim 包,两者入口命令和 API 不同,不要混用安装说明。
方式二:从源码可编辑安装(开发模式)
如果你要修改或研究 manimlib 本身,文档建议克隆仓库并在仓库根目录执行:
# Install python requirements
pip install -e .
# Try it out
manimgl example_scenes.py OpeningManimExample
# or
manim-render example_scenes.py OpeningManimExample
源码视角:这两个命令入口从何而来
manimgl 与 manim-render 这两个可执行命令并不是仓库里的脚本文件,而是由 setup.cfg 中声明的 console entry points 生成的:
[options.entry_points]
console_scripts =
manimgl = manimlib.__main__:main
manim-render = manimlib.__main__:main
两个命令最终都指向同一个 Python 函数 manimlib/main.py 中的 main()。从源码结构看,main() 做了三件事(manimlib/main.py):
- 打印当前版本:
ManimGL v{__version__}(版本号来自 manimlib/init.py,setup.cfg 元数据中当前为 1.7.2); - 调用 manimlib/config.py 中的
parse_cli()解析命令行参数(-w、-s、-n、--uhd等全部在此注册); - 进入
run_scenes(),通过manimlib.extract_scene.main(...)从场景文件中发现Scene子类并逐一scene.run(),期间支持 IPython 嵌入会话触发的场景热重载。
验证安装是否成功
文档给出的判断标准很直接:如果上述 manimgl example_scenes.py OpeningManimExample 命令运行后没有出现错误信息,即说明 manim 所需的全部环境(FFmpeg、OpenGL、Pango 等)都已安装成功。
这里的场景确实存在:example_scenes.py 中的 OpeningManimExample 是仓库自带的示例场景,会演示 NumberPlane 线性变换与复平面 z → z² 映射等 mobject 与动画。该场景还使用了 TexText 渲染 LaTeX 公式,因此若你安装了 LaTeX,这条验证命令同时覆盖了公式渲染链路;未装 LaTeX 的场景代码则仍可正常渲染非 Tex 部分。
安装后可用的常用运行参数(由 manimlib/config.py 的 parse_cli() 注册,README 也有同步说明):
-w:将场景渲染为视频文件;-o:渲染完成后自动打开输出文件(macOS 可用--finder在 Finder 中定位);-s:跳过动画、只保存最后一帧;-n <number>:从第 n 个动画开始渲染,"3,6"形式可渲染第 3 到 6 个动画;-f:预览窗口全屏播放;-l/-m/--hd/--uhd:分别以 480p / 720p / 1080p / 4K 渲染;-e <line>:在指定行号断点进入 IPython 交互会话,便于交互式调试场景。
方式三:Windows 平台完整流程
文档 安装指南 中 "Directly (Windows)" 一节给出的步骤是:
- 安装 FFmpeg,并确保其路径已加入
PATH环境变量; - 安装一个 LaTeX 发行版,文档推荐 TeXLive-full;
- 克隆仓库并安装 Python 依赖。
git clone https://github.com/3b1b/manim.git
cd manim
pip install -e .
manimgl example_scenes.py OpeningManimExample
方式四:Anaconda 环境安装
针对 conda 工作流,文档给出的流程是先安装 FFmpeg 与 LaTeX(同上文),再克隆仓库并创建独立环境:
git clone https://github.com/3b1b/manim.git
cd manim
conda create -n manim python=3.10
conda activate manim
pip install -e .
这里文档刻意使用 python=3.10 创建环境,与 python_requires = >=3.10 的下限保持一致,是官方推荐的起步版本。注意在 conda 环境中 manim 的 Python 包仍用 pip install -e . 安装,conda 只负责提供隔离的 Python 解释器。
深入理解:可编辑安装背后的依赖与配置
依赖清单
pip install -e . 实际安装的 Python 依赖由 setup.cfg 的 install_requires 决定,与 requirements.txt 内容一致,主要包括:
- 渲染与窗口:
glfw、rendercanvas、wgpu、skia-pathops、isosurfaces、trimesh(OpenGL/GPU 渲染与 3D 几何基础); - 文本与图形:
manimpango>=0.6.0、fontTools、svgelements>=1.8.1、Pillow(Pango 文本、SVG 与图像处理); - 数学与科学计算:
numpy、scipy、sympy、matplotlib、colour; - 音频与文件:
pydub、audioop-lts(Python 3.13+ 下替代标准库 audioop); - 工程辅助:
ipython>=8.18.0(-e交互断点)、diskcache(Tex/Text 缓存)、pyyaml(配置文件)、rich、tqdm等。
条件依赖也值得留意:audioop-lts 仅在 Python ≥ 3.13 安装,typing-extensions 仅在 Python < 3.11 安装——这也是文档强调 "Python 3.10 or higher" 之外,仓库对高版本 Python 做了适配的体现。
打包层面,MANIFEST.in 将整个 manimlib 目录纳入分发包并排除 .pyc 等文件,保证 pip install manimgl 拿到的包包含全部子模块。
配置加载链路
安装完成后,manimgl 每次运行的行为由一套分层配置控制。manimlib/config.py 的 initialize_manim_config() 展示了三层合并顺序(后者优先):
- 仓库内 manimlib/default_config.yml —— 全局默认值;
- 当前工作目录下的
custom_config.yml—— 用户项目级自定义(输出目录、图片/声音搜索路径、画质默认值等); --config_file指定的文件,以及命令行参数本身(分辨率、fps、背景色、目录等会经update_camera_config、update_file_writer_config、update_run_config等函数逐项覆盖)。
这意味着刚安装完的 manim 开箱即用默认值,而进入自己的项目目录后放一份 custom_config.yml 即可覆盖行为,无需改动代码。
小结
- 系统侧先装 FFmpeg(Linux 另需 Pango 及开发头文件;LaTeX 可选),
ffmpeg -version通过即可; - 最简路径是
pip install manimgl;要研究或修改manimlib则克隆本仓库执行pip install -e .,入口命令manimgl/manim-render均由 setup.cfg 的 entry points 注册到 manimlib/main.py 的main(); - 用
manimgl example_scenes.py OpeningManimExample跑通自带场景且无报错,即为安装成功的判定标准; - 后续渲染输出、画质、断点交互等能力都由 manimlib/config.py 中的 CLI 参数与 YAML 分层配置共同决定。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00