python manimgl数学动画演示_微积分_线性代数原理_ubuntu安装问题[已解决]

1.背景

最近调研python opencv, cuda加速矩阵/向量运算, 对于矩阵的线性变换, 秩, 转秩, 行列式变化等概概念模糊不清.

大概课本依旧是天书, 于是上B站搜索线性代数 , 看到 3Blue1Brown 线性变换本质 视频, 点击观看.

惊为天人 --> 豁然开朗 --> 突然顿悟 --> 开心不已

感觉大学的线性代数课本, 是真的差.
3Blue1Brown 线性变换本质 视频动画可视化

二维向量,

三维向量,

二维向量: 缩放,位移

-->引出矩阵乘法的几何意义

--> 引出矩阵乘法 为什么是 行x列, 行 = 列, 代数计算的规定

---> 引出线性变化, 行列式变化

----> 引出逆矩阵

-----> 引出基座标变化

点积 可视化映射, 计算 --> 引出 点积作用, 求两个向量夹角

...

通过视频, 动画演示 二维, 三维向量变化 引出代数公式.

而大学课本, 只定义和说明矩阵和线性代数公式的计算, 没有介绍原有, 用途;

故学完就忘, 根本记不住

3 0 0 2 \] X \[ 1 1 \] 矩阵乘法几何意义 , 缩放 \\begin{bmatrix} 3 \& 0 \\\\ 0 \& 2 \\end{bmatrix} X \\begin{bmatrix} 1 \\\\ 1 \\end{bmatrix} 矩阵乘法几何意义, 缩放 \[3002\]X\[11\]矩阵乘法几何意义,缩放 ![manimgl_线性变化.jpg](https://i-blog.csdnimg.cn/direct/91cbb2b855cc414281f519f33a4e280a.png) \[ 1 1 0 1 \] X \[ 1 1 \] 矩阵乘法几何意义 , 位移 \\begin{bmatrix} 1 \& 1 \\\\ 0 \& 1 \\end{bmatrix} X \\begin{bmatrix} 1 \\\\ 1 \\end{bmatrix} 矩阵乘法几何意义, 位移 \[1011\]X\[11\]矩阵乘法几何意义,位移 自己也有一些 微积分,线性变化计算的想法, 也想动画可视化这些计算过程. 于是尝试安装运行python manimgl **版本说明:** manim数学动画制作有3个版本 * manim: 原作者版本 * manimgl : 通过opengl即时绘制动画, 可以通过ipython交互, 输入命令, 即时显示效果 --\> 现场教学推荐 * manimCE: 社区维护版, 原作者主要做数学视频, 没时间管理github pr请求, 由社区维护 --\> 推荐版本 ### 2.问题 测试环境1: * 系统: wsl ubuntu24.04 * python 版本: 3.12 测试环境2: * 系统: wsl ubuntu22.04 * python 版本: 3.10 安装依赖 ```shell # 依赖库 sudo apt install -y libcairo2-dev libpango1.0-dev libpangocairo-1.0-0 libgdk-pixbuf2.0-dev libffi-dev libssl-dev sudo apt install -y libxml2-dev libxslt1-dev libjpeg-dev libfreetype6-dev libsdl2-dev libopenjp2-7-dev zlib1g-dev tesseract-ocr sudo apt install -y libtesseract-dev libwebp-dev ffmpeg texlive sudo apt install -y texlive-full # Note: texlive-full 安装需要极长时间, 请耐心等待 ``` venv创建独立环境, 安装manimgl ```shell # 更新pip pip install --upgrade pip # 1.创建虚拟环境 python3 -m venv manimgl # 2.加载环境 source manimgl/bin/activate # 3.安装manimgl pip3 install manimgl ``` 运行manimgl错误: `manimgl` ```log Traceback (most recent call last): File "/home/liuj/venv/manimgl/bin/manimgl", line 5, in from manimlib.__main__ import main File "/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__main__.py", line 4, in from manimlib import __version__ ImportError: cannot import name '__version__' from 'manimlib' (/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__init__.py) ``` 提示说明, python3.12 与 manimgl版本不一致 ### 3.解决过程 #### 方法1: 尝试安装低版本manimgl --\> Fail 查询manimgl版本 `pip index versions manimgl` > manimgl (1.7.2) > > Available versions: 1.7.2, 1.7.1, 1.7.0, 1.6.1, 1.6.0, 1.5.0, 1.4.1, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.0.0 安装低版本 1.6.1 mkdir ~/venv; cd ~/venv # 1.创建虚拟环境 python3 -m venv manimgl_v1.6 # 2.加载环境 source manimgl_v1.6/bin/activate # 3.安装低版本 manimgl pip3 install manimgl==1.6.1 ##### 运行错误1: ModuleNotFoundError manimgl Traceback (most recent call last): File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 5, in from manimlib.__main__ import main File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__init__.py", line 1, in import pkg_resources ModuleNotFoundError: No module named 'pkg_resources' 解决方法: `pip install --upgrade setuptools` 再次运行 `manimgl` 成功 ##### 运行错误2: gitee在线代码: [2_square_to_circle_方形变圆形.py](https://gitee.com/zero2200/4_python-example/blob/master/7_%E6%95%B0%E5%AD%A6_%E7%A7%91%E5%AD%A6_%E8%AE%A1%E7%AE%97/2_manim_manimgl%E6%95%B0%E5%AD%A6%E5%8A%A8%E7%94%BB/manimgl/2_square_to_circle_%E6%96%B9%E5%BD%A2%E5%8F%98%E5%9C%86%E5%BD%A2.py) 运行实例: `manimgl 2_square_to_circle_方形变圆形.py SquareToCircle` ```log ManimGL v1.6.1 [16:29:44] INFO Using the default configuration file, which you can modify in config.py:265 `/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/default_config.yml` INFO If you want to create a local configuration file, you can create a file named `custom_config.yml`, or run `manimgl --config` config.py:266 Traceback (most recent call last): File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 8, in sys.exit(main()) ^^^^^^ File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__main__.py", line 25, in main scene.run() File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/scene/scene.py", line 91, in run self.construct() File "/home/liuj/3_work/4_python-example/7_数学_科学_计算/2_manim_manimgl数学动画/manimgl/2_square_to_circle_方形变圆形.py", line 4, in construct circle = Circle() ^^^^^^^^ File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 324, in __init__ Arc.__init__(self, 0, TAU, **kwargs) File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 218, in __init__ VMobject.__init__(self, **kwargs) File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 85, in __init__ super().__init__(**kwargs) File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/mobject.py", line 89, in __init__ self.init_points() File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 221, in init_points self.set_points(Arc.create_quadratic_bezier_points( File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 968, in wrapper if not np.all(self.get_points() == old_points): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: operands could not be broadcast together with shapes (24,3) (0,3) ``` 错误原因: numpy 的版本不匹配, 即numpy的版本太高, API不兼容 尝试降低numpy版本, 引入其它问题 --\> 寻找其它解决方法 尝试安装manimgl 1.5.0 版本, 遇到相同问题--\> 寻找其它解决方法 #### 方法2: 尝试官网Anaconda安装方法 --\> Fail ##### 1.安装Anaconda3 中文博客安装教程: 清华源下载: 下载: **Anaconda3-5.3.1-Linux-x86_64.sh** 安装: bash Anaconda3-5.3.1-Linux-x86_64.sh # 按提示输入 yes, Enter # Note: vsocde 插件不要安装, 下载速度很慢 安装确认: 新开终端: `conda -V` > conda 4.5.11 --\> 安装conda成功 ##### 2.conda安装manimgl教程 官网教程: git clone https://github.com/3b1b/manim.git cd manim conda create -n manim python=3.8 conda activate manim pip install -e . `pip install -e .` 安装时提示错误 Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/ Obtaining file:///home/liuj/venv/manim Installing build dependencies ... done Checking if build backend supports build_editable ... done Getting requirements to build editable ... done Preparing editable metadata (pyproject.toml) ... done Collecting addict (from manimgl==1.7.2) Using cached https://mirrors.ustc.edu.cn/pypi/packages/6a/00/b08f23b7d7e1e14ce01419a467b583edbb93c6cdb8654e54a9cc579cd61f/addict-2.4.0-py3-none-any.whl (3.8 kB) Collecting appdirs (from manimgl==1.7.2) Using cached https://mirrors.ustc.edu.cn/pypi/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) INFO: pip is looking at multiple versions of manimgl to determine which version is compatible with other requirements. This could take a while. ERROR: Ignored the following versions that require a different python version: 0.1.0 Requires-Python >=3.13; 0.2.0 Requires-Python >=3.13; 0.2.1 Requires-Python >=3.13 ERROR: Could not find a version that satisfies the requirement audioop-lts (from manimgl) (from versions: none) ERROR: No matching distribution found for audioop-lts 错误原因: **audioop-lts; python_version\>='3.13'** --\> audioop-lts 依赖python版本3.13 与conda python=3.8冲突, 估计是原作者, 没有指定audioop-lts版本 --\> 放弃conda方法 #### 方法3: 降低python版本, 兼容manimgl --\> OK 通过错误提示 1. conda安装可知, manimgl 应该是在python=3.8版本验证通过 2. python3.12 版本安装失败可知, 需要降低python版本 故尝试降低python版本, 这里使用pyenv降低版本. ##### 1.安装pyenv curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 按安装提示添加环境配置: \~/.bashrc ```shell export PYENV_ROOT="$HOME/.pyenv" [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init - bash)" eval "$(pyenv virtualenv-init -)" ``` ##### 2.pyenv安装python=3.8版本环境 查看pyenv支持版本: `pyenv install list` > 3.8.1 > > 3.8.2 > > 3.8.3 > > 3.8.19 > **3.8.20** > > 3.9.0 > > 3.9.2 安装 **3.8.20** : `pyenv install 3.8.20` > Downloading Python-3.8.20.tar.xz... > > -\> https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tar.xz 如果下载速度慢, 可以使用迅雷, 或开启VPN下载 Python-3.8.20.tar.xz, 拷贝到\~/.pyenv/cache mkdir -p ~/.pyenv/cache cp -r Python-3.8.20.tar.xz ~/.pyenv/cache pyenv install 3.8.20 # 等待安装成功 查看python3.8版本是否安装成功 `pyenv versions` > * system (set by /home/liuj/.pyenv/version) > 3.8.20 ##### 3.pyenv切换版本, 再次安装manimgl 切换: `pyenv shell 3.8.20` 确认: `pyenv versions` > system > > \* 3.8.20 (set by PYENV_VERSION environment variable) `python3 -V` > Python 3.8.20 创建虚拟环境, 并安装manimgl mkdir ~/venv; cd ~/venv # 1.创建虚拟环境 python3 -m venv manimgl_3.8 # 2.加载环境 source manimgl_3.8/bin/activate # 3.安装manimgl pip3 install manimgl 运行: `manimgl` ubuntu22.04成功 ubuntu24.04失败 #### 汇总 使用两台电脑验证, 测试验证 1. 降低manimgl版本 2. conda安装 都遇到相同的问题. 最后只能在wsl ubuntu22.04 + python3.8 成功运行 ### 4.总结 1. 熟悉了python 版本管理: pyenv, conda 2. 熟悉了python 环境管理: venv, virtualen 3. manimgl版本是原作者更新, 测试不齐全, 建议使用manimCE 社区维护版制作动画视频 4. windows未测试 5. 动手能力强的, 强烈推荐使用manimgl即时演绎 + 交互, 可以用于实时演示 *** ** * ** ***

相关推荐
小小菜鸟,可笑可笑6 分钟前
Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作
linux·vscode·ubuntu
GDAL32 分钟前
Conda与Pip:Python包管理工具的对比与选型
python·conda·pip
窦再兴1 小时前
CentOS8.5 LLaMA-Factory训练模型
开发语言·人工智能·python·llama-factory·llama3.2
矛取矛求1 小时前
VMware 安装 Ubuntu 实战分享
linux·运维·ubuntu
yivifu1 小时前
使用pybind11开发c++扩展模块输出到控制台的中文信息显示乱码的问题
开发语言·python·pybind11
爱看烟花的码农1 小时前
C++、Python的输入输出及相关的处理操作
c++·python
纪元A梦1 小时前
华为OD机试真题——天然蓄水库(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·c语言·javascript·c++·python·华为od·go
北极象1 小时前
使用Golang打包jar应用
python·golang·jar
摸鱼佬在线2 小时前
基于关键字定位的自动化PDF合同拆分
python·pdf
qq3332129724(中职生)2 小时前
python推箱子游戏
python