首页
/ ManimGL 安装实战指南:从系统依赖到源码级可编辑安装

ManimGL 安装实战指南:从系统依赖到源码级可编辑安装

2026-09-04 16:59:35作者:田桥桑Industrious

本文围绕仓库文档 安装指南 展开,讲解 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.cfginstall_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 包是 manimglsetup.cfgname = 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

源码视角:这两个命令入口从何而来

manimglmanim-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):

  1. 打印当前版本:ManimGL v{__version__}(版本号来自 manimlib/init.pysetup.cfg 元数据中当前为 1.7.2);
  2. 调用 manimlib/config.py 中的 parse_cli() 解析命令行参数(-w-s-n--uhd 等全部在此注册);
  3. 进入 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.pyparse_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)" 一节给出的步骤是:

  1. 安装 FFmpeg,并确保其路径已加入 PATH 环境变量;
  2. 安装一个 LaTeX 发行版,文档推荐 TeXLive-full
  3. 克隆仓库并安装 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.cfginstall_requires 决定,与 requirements.txt 内容一致,主要包括:

  • 渲染与窗口:glfwrendercanvaswgpuskia-pathopsisosurfacestrimesh(OpenGL/GPU 渲染与 3D 几何基础);
  • 文本与图形:manimpango>=0.6.0fontToolssvgelements>=1.8.1Pillow(Pango 文本、SVG 与图像处理);
  • 数学与科学计算:numpyscipysympymatplotlibcolour
  • 音频与文件:pydubaudioop-lts(Python 3.13+ 下替代标准库 audioop);
  • 工程辅助:ipython>=8.18.0-e 交互断点)、diskcache(Tex/Text 缓存)、pyyaml(配置文件)、richtqdm 等。

条件依赖也值得留意: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.pyinitialize_manim_config() 展示了三层合并顺序(后者优先):

  1. 仓库内 manimlib/default_config.yml —— 全局默认值;
  2. 当前工作目录下的 custom_config.yml —— 用户项目级自定义(输出目录、图片/声音搜索路径、画质默认值等);
  3. --config_file 指定的文件,以及命令行参数本身(分辨率、fps、背景色、目录等会经 update_camera_configupdate_file_writer_configupdate_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.pymain()
  • manimgl example_scenes.py OpeningManimExample 跑通自带场景且无报错,即为安装成功的判定标准;
  • 后续渲染输出、画质、断点交互等能力都由 manimlib/config.py 中的 CLI 参数与 YAML 分层配置共同决定。
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
docsdocs
暂无描述
Markdown
889
5.78 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.17 K
341