一、环境
笔记本
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
二、安装miniconda3
manimgl基于python开发,为了防止将笔记本中已有的python环境破坏,因此安装python虚拟环境。miniconda3是conda的一个最小版,已经满足要求,不再安装更复杂功能更强大的conda。
参考 https://docs.anaconda.com/miniconda/install/
$ mkdir -p ~/miniconda3
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
$ bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
$ rm ~/miniconda3/miniconda.sh
三、安装依赖
参考 https://docs.manim.org.cn/getting_started/installation.html
$ sudo apt install ffmpeg
$ sudo apt install libpango1.0-dev
$ sudo apt install texlive-full
note: 安装texlive-full时将出现卡住的现象,等了几小时都没有结束,网上查询说直接多次回车即可解决(验证有效),不知有什么影响,但是后续的操作都正常。
四、创建虚拟环境并安装maimgl
参考 https://docs.manim.org.cn/getting_started/installation.html
$ source ~/miniconda3/bin/activate
(base)$ conda create --name manimgl python=3.8
(base) $ conda activate manimgl
(manimgl) $ pip install manimgl
五、运行以及问题解决
(manimgl) $ manimgl --conofig
(manimgl) $ manimgl
参考 https://www.bilibili.com/opus/702394618087473169?spm_id_from=333.1387.0.0
问题1:/usr/lib/dri/radeonsi_dri.so: cannot open shared object file
libEGL warning: MESA-LOADER: failed to open radeonsi: /usr/lib/dri/radeonsi_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
/home/tree/miniconda3/envs/manimgl/lib/python3.8/site-packages/glfw/__init__.py:912: GLFWError: (65542) b'EGL: Failed to initialize EGL: EGL is not or could not be initialized'
warnings.warn(message, GLFWError)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
实际上笔记本上有这些库,看报错输出是有/usr/lib/x86_64-linux-gnu/dri,但是为什么没找到,或许是miniconda3的虚拟环境导致的
。这里就创建一个软连接来解决。
解决:
sudo ln -s /usr/lib/x86_64-linux-gnu/dri /usr/lib/dri
问题2: version `GLIBCXX_3.4.30’ not found
libEGL warning: MESA-LOADER: failed to open radeonsi: /home/tree/miniconda3/envs/manimgl/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libEGL warning: MESA-LOADER: failed to open swrast: /home/tree/miniconda3/envs/manimgl/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
$ strings ~/miniconda3/envs/manimgl/lib/libstdc++.so.6 | grep -oE 'GLIBCXX_[0-9.]+' | sort | uniq -c
...
从输出中确实没有GLIBCXX_3.4.30,所以问题是miniconda3构建的这个虚拟环境中的glibcxx版本比我笔记本中的glibcxx版本低,导致无法使用我笔记本中的一些使用了高版本函数的库
解决:
参考 https://libraries.io/conda/libstdcxx-ng
(manimgl) $ conda install -c conda-forge libstdcxx-ng=14.1.0
其中因安装总是失败,因此找了一些国内源,修改了miniconda3的源
$ cat ~/.condarc
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/r
auto_activate_base: false
show_channel_urls: true
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
正常进入终端模式
六、源码运行example
(manimgl) $ git clone https://github.com/3b1b/manim.git
(manimgl) $ cd manim
(manimgl) $ manimgl example_scenes.py OpeningManimExample