• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Maxwin
V2EX  ›  程序员

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

  •  
  •   Maxwin · 21h 30m ago · 687 views

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

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

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

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

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

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

    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 看系统类型,再确认解释器:

    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 的最小路径是:

    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 。

    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 两行,运行:

    uv run manim -ql first_scene.py FirstScene
    

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

    4. DLL 和 LaTeX 分开处理

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

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

    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

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2638 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 15:46 · PVG 23:46 · LAX 08:46 · JFK 11:46
    ♥ Do have faith in what you're doing.