这篇文章的目的是给出另一个关于如何让 Manim 使用 Python 3.7 在 Mac 上 工作的帐户,仅此而已。我花了几个令人沮丧的夜晚试图让事情发挥作用,我想把我的经验添加到 Manim 不断增长的资源中。我强烈建议将此帖与 Todd Zimmerman 的博客 结合使用,学习如何使用 Grant Sanderson 的代码。
我提前道歉包含了许多更简单的步骤,但这篇文章旨在 让没有编程背景的人可以访问 Manim。 我认为一旦将 Manim 安装到您的计算机上,Manim 相对容易学习,所以我希望那些没有太多编程背景的人不会因为让这个库工作而感到沮丧而且可以专注于做出很棒的内容。
如果按顺序进行,这个过程应该相对简单。一般过程将涉及:
- 下载并安装 Homebrew 包管理器和 Python 3.7
- 在整个系统中安装必要的软件包
- 下载并安装 MacTex
- 克隆 Manim 库并创建虚拟环境
- 修改代码
- 运行测试
第 1 步:下载并安装 Hombrew 和 Python3
首先需要的是程序包管理器 Homebrew,它将帮助我们安装一些 pip 无法正确安装的软件包。您可以通过打开终端并运行以下代码行来安装 Homebrew:
1 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
安装 Homebrew 后,可以通过运行安装 Python:
1 | brew install python3 |
如果在此过程中出现任何问题,我建议您转到此视频:
一旦安装了 python,我们需要获得一些软件包。返回终端并运行以下代码行,以获取安装所需的软件包(cairo,pkg-config,virtualenv)。
1 | brew install cairo |
virtualenv 是获得 Manim 库之前唯一绝对需要的软件包,但是我个人在安装或推出将上述项目安装到虚拟环境中时遇到了麻烦(稍后会介绍)。这就是为什么我建议在继续本教程之前将它们直接安装到您的系统上。
下一步需要花费大量的试验和错误来解决,特别是因为 3b1b 的 GitHub 上没有文档。Manim 使用不同的 LaTeX 子包,因此 pip3 install latex
可能无法获得所需的所有必需子包。我认为主要的问题是许多人已经在他们的计算机上使用了不同形式的 LaTeX,所以当你认为你已经掌握了所有东西时,很难确保一切都在那里。经过多次安装和卸载后,我发现 MacTex 的完整安装可以解决问题,可以在这里找到:
http://www.tug.org/mactex/mactex-download.html
确保你安装了所有东西 - 我尝试了几次快捷方式,并没有结束工作。
现在已经安装了 LaTeX,您可以继续开始获取 Manim 库。通常,在虚拟环境中运行项目是一种很好的做法,这样您就可以轻松控制所有文件和其他软件包的安装位置。以下是我推荐的步骤:
第 2 步:为动画创建文件夹
创建您希望存储 Manim 库的文件夹。我在我的主目录中创建了一个名为 animation 的文件夹:
第 3 步:导航终端
前往 Manim GitHub 并获取要克隆的 URL。复制后,前往终端并导航到刚刚创建的文件夹。导航到终端内的特定文件夹非常简单。您可以通过键入以下内容找到当前目录(当前文件路径):
1 | pwd |
您可以通过键入以下内容找到当前目录中的文件夹:
1 | ls |
并且您可以通过运行以下命令更改目录以输入其中一个文件夹:
1 | cd folder/subfolder/subsubfolder |
第 4 步:克隆 Manim 存储库
现在在 Terminal 中运行以下命令将 Manim 存储库克隆到您的文件夹中:
1 | git clone https://github.com/3b1b/manim.git |
您的文件夹现在看起来应该是这样的(我将文件夹重命名为 manim37):
第 5 步:设置虚拟环境
现在我们需要建立一个虚拟环境。基本上这将是在 Manim 文件夹中重新安装单独版本的 Python3。在虚拟环境中运行时,您将能够运行 Python 并将软件包安装到该特定文件夹而不是整个系统。这些通常用于确保可以逐个项目地维护特定版本的包。
要创建虚拟环境,请转到终端并导航到 Manim 文件夹。现在继续并将以下命令运行到终端:
1 | virtualenv venv |
virtualenv
指的是我们之前安装的软件包。venv
是您将安装虚拟环境的文件夹的名称。
现在,如果您查看 Manim37 文件夹,应该有一个名为 venv
的文件夹。如果没有,并且 venv
文件夹在其他地方结束,您只需单击并将其拖动到 Manim37
文件夹即可。
第 6 步:激活虚拟环境
现在您已经设置了虚拟环境,现在需要从终端输入。确保您当前的工作目录是 Manim37,然后运行:
1 | source venv/bin/activate |
您的终端线将更改,并且 (venv) 将出现在提示的开头:
使用 Manim 所做的一切都需要在这个虚拟环境中完成,这意味着安装其他软件包,运行动画代码等。如果重新打开终端,则必须再次激活虚拟环境文件夹。您可以通过执行 deactivate
随时退出虚拟环境。
第 7 步:pip3 安装包
现在我们需要获得更多的软件包:sox,ffmepg,latex,pycairo 等。继续运行以下各项:
1 | pip3 install sox |
最后一行代码将运行所需的更多软件包的安装。你可以看看的 requirements.txt 的 Manim37 文件夹内的文件,看看到底需要什么,但是一旦这个过程完成后,你将不需要任何更多的包。
第 8 步:修改代码
现在已经下载了所有软件包,我们可以开始修复一些与您的计算机相匹配的代码。首先需要做的是在 Manim37 目录中添加一个名为 “output” 的文件夹。
然后我们需要更改位于 Manim37 文件夹中的文件 constants.py 中的一行代码。
打开后,转到第 23 行,找到 “Dropbox(3Blue1Brown)/ 3Blue1Brown Team Folder” 的行
我们需要更改此行以匹配刚刚创建的 输出 文件夹。在我的例子中,我用 “animation/manim37/output” 替换了那一行。您应该用您的文件路径替换它(请记住,上面一行中的 〜
是主目录的文件路径的缩写)。
第 9 步:测试
现在我们需要运行一个快速测试来查看某些动画是否正常工作。仍在虚拟环境中,运行:
1 | python3 extract_scene.py example_scenes.py SquareToCircle -pl |
这应该会启动 QuickTime 来运行您的示例视频。如果您此时遇到问题,我建议您搜索 Manim GitHub 的 问题 部分。
第 10 步:LaTeX
所有形状和动画都应该在这一点上起作用。但是,要使单词起作用,我们需要对几个文件进行一些修改。这些变化对我有用。
打开 utils/tex_file_writing.py 并向下滚动到最后两个函数,然后更改它们,使它们看起来像这样(对于截图感到抱歉 - 目前在保持格式化的同时发布代码时出现问题):
需要修改的最后一个文件是 tex_template.tex。继续前进,让你看起来像:
第 11 步:最终测试
既然已经进行了这些更改,请继续尝试运行:
1 | python3 extract_scene.py example_scenes.py WriteStuff -pl |
希望所有人都为你工作!
如果有问题,我建议在 3b1b 的 GitHub 上发布一个问题。那里有更多知识渊博的人,并且通过综合帮助你解决问题的机会更大。