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

打印 上一主题 下一主题

主题 1394|帖子 1394|积分 4197

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} 矩阵乘法几何意义, 缩放                     [30​02​]X[11​]矩阵乘法几何意义,缩放

                                                    [                                                                                     1                                                                                             1                                                                                                                   0                                                                                             1                                                                                 ]                                      X                                       [                                                                                     1                                                                                                                   1                                                                                 ]                                      矩阵乘法几何意义                            ,                            位移                                  \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix} X \begin{bmatrix} 1 \\ 1 \end{bmatrix} 矩阵乘法几何意义, 位移                     [10​11​]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
安装依赖
  1. # 依赖库
  2. sudo apt install -y libcairo2-dev libpango1.0-dev libpangocairo-1.0-0 libgdk-pixbuf2.0-dev libffi-dev libssl-dev
  3. sudo apt install -y libxml2-dev libxslt1-dev libjpeg-dev libfreetype6-dev libsdl2-dev libopenjp2-7-dev zlib1g-dev tesseract-ocr
  4. sudo apt install -y libtesseract-dev libwebp-dev ffmpeg texlive
  5. sudo apt install -y texlive-full
  6. # Note: texlive-full 安装需要极长时间, 请耐心等待
复制代码
venv创建独立情况, 安装manimgl
  1. # 更新pip
  2. pip install --upgrade pip
  3. # 1.创建虚拟环境
  4. python3 -m venv manimgl
  5. # 2.加载环境
  6. source manimgl/bin/activate
  7. # 3.安装manimgl
  8. pip3 install manimgl
复制代码
运行manimgl错误: manimgl
  1. Traceback (most recent call last):
  2.   File "/home/liuj/venv/manimgl/bin/manimgl", line 5, in <module>
  3.     from manimlib.__main__ import main
  4.   File "/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__main__.py", line 4, in <module>
  5.     from manimlib import __version__
  6. 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
  1. mkdir ~/venv; cd ~/venv
  2. # 1.创建虚拟环境
  3. python3 -m venv manimgl_v1.6
  4. # 2.加载环境
  5. source manimgl_v1.6/bin/activate
  6. # 3.安装低版本 manimgl
  7. pip3 install manimgl==1.6.1
复制代码
运行错误1: ModuleNotFoundError

  1. manimgl
  2. Traceback (most recent call last):
  3.   File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 5, in <module>
  4.     from manimlib.__main__ import main
  5.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__init__.py", line 1, in <module>
  6.     import pkg_resources
  7. ModuleNotFoundError: No module named 'pkg_resources'
复制代码
办理方法:
pip install --upgrade setuptools
再次运行 manimgl 成功
运行错误2:

gitee在线代码: 2_square_to_circle_方形变圆形.py
运行实例: manimgl 2_square_to_circle_方形变圆形.py SquareToCircle
  1. ManimGL v1.6.1
  2. [16:29:44] INFO     Using the default configuration file, which you can modify in                                                                            config.py:265
  3.                     `/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/default_config.yml`                                                               
  4.            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
  5. Traceback (most recent call last):
  6.   File "/home/liuj/venv/manimgl_v1.6/bin/manimgl", line 8, in <module>
  7.     sys.exit(main())
  8.              ^^^^^^
  9.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__main__.py", line 25, in main
  10.     scene.run()
  11.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/scene/scene.py", line 91, in run
  12.     self.construct()
  13.   File "/home/liuj/3_work/4_python-example/7_数学_科学_计算/2_manim_manimgl数学动画/manimgl/2_square_to_circle_方形变圆形.py", line 4, in construct
  14.     circle = Circle()
  15.              ^^^^^^^^
  16.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 324, in __init__
  17.     Arc.__init__(self, 0, TAU, **kwargs)
  18.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 218, in __init__
  19.     VMobject.__init__(self, **kwargs)
  20.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 85, in __init__
  21.     super().__init__(**kwargs)
  22.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/mobject.py", line 89, in __init__
  23.     self.init_points()
  24.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/geometry.py", line 221, in init_points
  25.     self.set_points(Arc.create_quadratic_bezier_points(
  26.   File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/mobject/types/vectorized_mobject.py", line 968, in wrapper
  27.     if not np.all(self.get_points() == old_points):
  28.                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  29. 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

中文博客安装教程: https://blog.csdn.net/qq_29225913/article/details/105347317
清华源下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
下载: Anaconda3-5.3.1-Linux-x86_64.sh
安装:
  1. bash Anaconda3-5.3.1-Linux-x86_64.sh
  2. # 按提示输入 yes, Enter
  3. # Note: vsocde 插件不要安装, 下载速度很慢
复制代码
安装确认:
新开终端: conda -V
   conda 4.5.11 --> 安装conda成功
  2.conda安装manimgl教程

官网教程: https://3b1b.github.io/manim/getting_started/installation.html
  1. git clone https://github.com/3b1b/manim.git
  2. cd manim
  3. conda create -n manim python=3.8
  4. conda activate manim
  5. pip install -e .
复制代码
pip install -e . 安装时提示错误
  1. Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
  2. Obtaining file:///home/liuj/venv/manim
  3.   Installing build dependencies ... done
  4.   Checking if build backend supports build_editable ... done
  5.   Getting requirements to build editable ... done
  6.   Preparing editable metadata (pyproject.toml) ... done
  7. Collecting addict (from manimgl==1.7.2)
  8.   Using cached https://mirrors.ustc.edu.cn/pypi/packages/6a/00/b08f23b7d7e1e14ce01419a467b583edbb93c6cdb8654e54a9cc579cd61f/addict-2.4.0-py3-none-any.whl (3.8 kB)
  9. Collecting appdirs (from manimgl==1.7.2)
  10.   Using cached https://mirrors.ustc.edu.cn/pypi/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
  11. INFO: pip is looking at multiple versions of manimgl to determine which version is compatible with other requirements. This could take a while.
  12. 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
  13. ERROR: Could not find a version that satisfies the requirement audioop-lts (from manimgl) (from versions: none)
  14. 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

通过错误提示

  • conda安装可知, manimgl 应该是在python=3.8版本验证通过
  • python3.12 版本安装失败可知, 需要低沉python版本
    故实行低沉python版本, 这里使用pyenv低沉版本.
1.安装pyenv

  1. curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer  | bash
复制代码
按安装提示添加情况设置: ~/.bashrc
  1. export PYENV_ROOT="$HOME/.pyenv"
  2. [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
  3. eval "$(pyenv init - bash)"
  4. 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
  1. mkdir -p ~/.pyenv/cache
  2. cp -r Python-3.8.20.tar.xz  ~/.pyenv/cache
  3. pyenv install 3.8.20
  4. # 等待安装成功
复制代码
查看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
  1. mkdir ~/venv; cd ~/venv
  2. # 1.创建虚拟环境
  3. python3 -m venv manimgl_3.8
  4. # 2.加载环境
  5. source manimgl_3.8/bin/activate
  6. # 3.安装manimgl
  7. pip3 install manimgl
复制代码
运行: manimgl
ubuntu22.04成功
ubuntu24.04失败
汇总

使用两台电脑验证, 测试验证

  • 低沉manimgl版本
  • conda安装
都遇到相同的题目.
最后只能在wsl ubuntu22.04 + python3.8 成功运行
4.总结


  • 熟悉了python 版本管理: pyenv, conda
  • 熟悉了python 情况管理: venv, virtualen
  • manimgl版本是原作者更新, 测试不齐全, 发起使用manimCE 社区维护版制作动画视频
  • windows未测试
  • 动手能力强的, 猛烈推荐使用manimgl即时演绎 + 交互, 可以用于实时演示


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表