做了个浏览器里跑真 Manim 的站,也整理了 Windows 本地安装与排错

发布于

最近把 Windows 上安装 Manim Community 的流程重新走了一遍。很多教程的问题不是命令错,而是把 Python 、原生 DLL 、PyPI 、LaTeX 和代码错误混成了一个“安装失败”。一旦失败就从头重装,反而很难知道是哪一层坏了。

不过先说我的真实建议:**如果只是刚开始学 Manim ,不要先装本地环境。** 我做极坐标⋅XYZ 的直接原因,就是希望初学者打开浏览器便能运行真 Manim 0.20.1 ,而不是先过 Python/uv/VC++/MiKTeX 这套环境考试。

目前 Playground 可以匿名打开,内置示例直接 Run ;编辑器有 Python 高亮、基于真 Manim 的补全/签名/悬浮文档,渲染后可以播放、拖动逐帧查看,也能导出 MP4/GIF 。中文 `Text`、`MathTex`、2D/3D 、updater 等常见场景都走浏览器适配层,Python 代码在本机浏览器的 Pyodide 沙盒中执行。

初学路径很短:打开 Playground → 选示例 → 改一个参数 → Run → 看 traceback 或预览 → 导出。站内教程还把讲解与可运行代码放在一起,适合先建立对 Scene/API 的理解。

本地环境仍然有明确价值:额外 pip 包、多文件工程、完整文件系统、批量渲染、CI 和自动化脚本。所以我把它们定义成两个阶段,而不是两个互斥产品:浏览器负责入门、试验与代码对照,本地负责长期工程。

我现在采用的原则是:**每引入一个组件,就做一次最小验证。** 推荐链路是:

```text
Windows/CPU 架构
→ Python
→ uv/国内 PyPI 源
→ Manim 核心
→ VC++ Runtime (有 DLL 错误时处理)
→ MiKTeX/CTAN (需要 Tex/MathTex 时处理)
→ 第一次完整渲染
```

## 1. 先确认系统和架构
新环境建议 Windows 10/11 x64 。当前 Manim Community 0.20.1 要求 Python 3.11 以上,我在新手路径里用 Python 3.12 x64 ,主要是为了避开位数混用和一些原生依赖问题,不是说其他受支持版本一定不能用。

先运行 `msinfo32` 看系统类型,再确认解释器:

```powershell
py -3.12 --version
py -3.12 -c "import platform; print(platform.architecture())"
```

Windows 7 与当前 Manim 的 Python 要求没有官方版本交集; Windows 8.1 的完整运行库链路也不适合新装。ARM64 需要逐个检查 `win_arm64` wheel ,不能直接照搬 x64 教程。

## 2. 用 uv 隔离项目
不建议把系统 Python 、Store Python 、Anaconda 和项目 venv 混在一起。用 uv 的最小路径是:

```powershell
uv init --python 3.12 manim-workspace
cd manim-workspace
uv add manim
uv run manim checkhealth
```

国内网络可以给 uv 配清华或中科大 PyPI 镜像。这里有个容易误判的边界:镜像只能解决包下载和索引访问,不能解决 CPU 架构不匹配、缺 wheel 、VC Runtime 缺失或 Python 代码错误。

## 3. 第一次渲染拆成三层
先只渲染 `Circle`,成功后加入 `Text`,最后再加入 `MathTex`。这样三次测试分别覆盖 Manim 核心、Pango/字体和 MiKTeX/LaTeX 。

```python
from manim import *

class FirstScene(Scene):
def construct(self):
circle = Circle(color=BLUE)
title = Text("你好,Manim", font="Microsoft YaHei").next_to(circle, UP)
formula = MathTex(r"e^{i\pi}+1=0").next_to(circle, DOWN)
self.play(Create(circle))
self.play(Write(title))
self.play(Write(formula))
self.wait()
```

先注释掉 `formula` 两行,运行:

```powershell
uv run manim -ql first_scene.py FirstScene
```

圆能渲染说明核心基本可用;加入 `Text` 后失败才去查字体/Pango ;只在 `MathTex` 阶段失败才去查 MiKTeX 。

## 4. DLL 和 LaTeX 分开处理
出现 `VCRUNTIME140.dll`、`MSVCP140.dll` 或 import 阶段的 `DLL load failed`,先确认 Python 与依赖都是 x64 ,再从 Microsoft 官方安装或 Repair x64 VC++ Redistributable 。不要从 DLL 下载站单独捡文件放进系统目录。

只用几何图形和 `Text` 时可以不装 MiKTeX 。使用 `Tex`、`MathTex` 时,安装 Basic MiKTeX 后还需要更新宏包、允许按需安装,并检查:

```powershell
latex --version
dvisvgm --version
kpsewhich standalone.cls
```

`standalone.cls` 找不到是宏包/仓库问题,`dvisvgm` 找不到是工具链问题,`latex failed` 则要看 LaTeX 日志;这些都不应该靠重装 Python 解决。

## 5. 我现在按这个表分流
- 下载超时、解析卡住:PyPI/CTAN 、Python 条件、wheel
- `manim` 命令找不到:项目目录、是否使用 `uv run`
- `DLL load failed`:位数、VC Runtime 、原生扩展
- `standalone.cls` / `dvisvgm`:MiKTeX 更新与仓库
- `SyntaxError` / `NameError` / `TypeError`:按 traceback 改代码

另外做了一个浏览器里的真 Manim 环境,主要用途不是替代长期本地工程,而是先用同一段代码做对照实验:浏览器能跑、本地 import 失败,就继续查本机依赖;两边都是同一条 Python traceback ,就先修代码。

链接只放一个: [https://jizuobiao.xyz/playground](https://jizuobiao.xyz/playground)

如果大家在 Windows ARM64 、Server Core 、字体或 MiKTeX 非交互安装上有实际踩坑,也欢迎补充。我会把能够复现的情况继续整理进文档。

---

原文链接:[点击查看](https://www.v2ex.com/t/1228430)

评论

暂无评论。