python manimgl數學動畫演示_微積分_線性代數原理_ubuntu安裝問題[已解決]

1.背景

最近調研python opencv, cuda加速矩陣/向量運算, 對于矩陣的線性變換, 秩, 轉秩, 行列式變化等概概念模糊不清.
大概課本依舊是天書, 于是上B站搜索線性代數, 看到 3Blue1Brown 線性變換本質 視頻, 點擊觀看.
驚為天人 --> 豁然開朗 --> 突然頓悟 --> 開心不已
感覺大學的線性代數課本, 是真的差.
3Blue1Brown 線性變換本質 視頻動畫可視化
二維向量,
三維向量,
二維向量: 縮放,位移
–>引出矩陣乘法的幾何意義
–> 引出矩陣乘法 為什么是 行x列, 行 = 列, 代數計算的規定
—> 引出線性變化, 行列式變化
----> 引出逆矩陣
-----> 引出基座標變化
點積 可視化映射, 計算 --> 引出 點積作用, 求兩個向量夾角

通過視頻, 動畫演示 二維, 三維向量變化 引出代數公式.
而大學課本, 只定義和說明矩陣和線性代數公式的計算, 沒有介紹原有, 用途;
故學完就忘, 根本記不住
向量變化的幾何意義.jpg
[ 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?]矩陣乘法幾何意義,縮放

manimgl_線性變化.jpg

[ 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

安裝依賴

# 依賴庫
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 texlivesudo apt install -y texlive-full
# Note: texlive-full 安裝需要極長時間, 請耐心等待

venv創建獨立環境, 安裝manimgl

# 更新pip
pip install --upgrade pip# 1.創建虛擬環境
python3 -m venv manimgl# 2.加載環境
source manimgl/bin/activate# 3.安裝manimgl
pip3 install manimgl

運行manimgl錯誤: manimgl

Traceback (most recent call last):File "/home/liuj/venv/manimgl/bin/manimgl", line 5, in <module>from manimlib.__main__ import mainFile "/home/liuj/venv/manimgl/lib/python3.12/site-packages/manimlib/__main__.py", line 4, in <module>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 <module>from manimlib.__main__ import mainFile "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__init__.py", line 1, in <module>import pkg_resources
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


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 <module>sys.exit(main())^^^^^^File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/__main__.py", line 25, in mainscene.run()File "/home/liuj/venv/manimgl_v1.6/lib/python3.12/site-packages/manimlib/scene/scene.py", line 91, in runself.construct()File "/home/liuj/3_work/4_python-example/7_數學_科學_計算/2_manim_manimgl數學動畫/manimgl/2_square_to_circle_方形變圓形.py", line 4, in constructcircle = 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_pointsself.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 wrapperif 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

中文博客安裝教程: 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
安裝:

bash Anaconda3-5.3.1-Linux-x86_64.sh
# 按提示輸入 yes, Enter
# Note: vsocde 插件不要安裝, 下載速度很慢

安裝確認:
新開終端: conda -V

conda 4.5.11 --> 安裝conda成功

2.conda安裝manimgl教程

官網教程: https://3b1b.github.io/manim/getting_started/installation.html

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/manimInstalling build dependencies ... doneChecking if build backend supports build_editable ... doneGetting requirements to build editable ... donePreparing 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

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即時演繹 + 交互, 可以用于實時演示

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901577.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901577.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901577.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git 學習筆記

這篇筆記記錄了我在git學習中常常用到的指令&#xff0c;方便在未來進行查閱。此篇文章也會根據筆者的學習進度持續更新。 網站分享 Git 常用命令大全 Learn Git Branching 基礎 $ git init //在當前位置配置一個git版本庫 $ git add <file> //將文件添加至…

Dynamics365 ExportPdfTemplateExportWordTemplate兩個Action調用的body構造

這兩天在用ExportPdfTemplate做pdf導出功能時&#xff0c;遇到了如下問題InnerException : Microsoft.OData.ODataException: An unexpected StartArray node was found when reading from the JSON reader. A PrimitiveValue node was expected. 我的場景是使用power automate…

經典算法 判斷一個圖是不是樹

判斷一個圖是不是樹 問題描述 給一個以0 0結尾的整數對列表&#xff0c;除0 0外的每兩個整數表示一條連接了這兩個節點的邊。假設節點編號不超過100000大于0。你只要判斷由這些節點和邊構成的圖是不是樹。是輸出YES&#xff0c;不是輸出NO。 輸入樣例1 6 8 5 3 5 2 6 4 5…

【嵌入式八股2】C++:STL容器與算法

1. STL常見容器及其內部實現的數據結構 序號 名稱 描述 存儲結構 常用方法和操作 1vector動態分配的數組順序數組&#xff08;array&#xff09;v.push_back(), v.pop_back(), v.insert(), v.erase(), v.capacity(), v.size(), v.at(idx), v.front(), v.back()2list雙向鏈表離…

vmcore分析鎖問題實例(x86-64)

問題描述&#xff1a;系統出現panic&#xff0c;dmesg有如下打印&#xff1a; [122061.197311] task:irq/181-ice-enp state:D stack:0 pid:3134 ppid:2 flags:0x00004000 [122061.197315] Call Trace: [122061.197317] <TASK> [122061.197318] __schedule0…

在Apple Silicon上部署Spark-TTS:四大核心庫的技術魔法解析!!!

在Apple Silicon上部署Spark-TTS&#xff1a;四大核心庫的技術魔法解析 &#x1f680; &#xff08;M2芯片實測&#xff5c;Python 3.12.9PyTorch 2.6.0全流程解析&#xff09; 一、核心庫功能全景圖 &#x1f50d; 在Spark-TTS的部署過程中&#xff0c;pip install numpy li…

leetcode03 -- 武漢旅游查詢系統

武漢旅游查詢系統 1 界面展示 1.首頁地圖界面 2.查找功能 在查找框內輸入查找的景點名稱 查找到的景點在地圖上進行定位,右側展示景點的詳細信息。 3.添加景點功能 在地圖上點擊某個位置,系統彈出一個輸入框供用戶填寫景點的名稱和描述。 在彈出的輸入框中輸入景點名…

玩機進階教程----MTK芯片設備刷機導致的死磚修復實例解析 連電腦毫無反應 非硬件問題

在高通芯片機型中,我們可以通過短接主板測試點來激活高通芯片特有的9008底層端口來刷寫救磚固件。但通常MTK芯片類的設備聯機電腦即可觸發深刷模式。但有些例外的情況會導致鏈接電腦毫無反應。遇到類似故障的友友可以參閱此博文嘗試解決。 通過博文了解 1??????-----實…

09-設計模式企業場景 面試題-mk

文章目錄 1.工廠(方法)模式1.1.簡單工廠模式(不是設計模式,是編程習慣)1.2.工廠方法模式(企業開發中最常見)1.3.抽象工廠模式2.策略模式2.1.登錄案例(工廠模式+策略模式)3.責任鏈設計模式4.單點登錄怎么是實現的?5.權限認證是如何實現的6.上傳數據的安全性你們怎么控…

BUUCTF-Web(1-20)

目錄 一.SQL注入 (1)[極客大挑戰 2019]EasySQL 萬能密碼 (7)[SUCTF 2019]EasySQL 堆疊注入 解一&#xff1a; 解二&#xff1a; (10)[強網杯 2019]隨便注 堆疊注入 解一&#xff1a; 解二&#xff1a; 解三&#xff1a; (8)[極客大挑戰 2019]LoveSQL 聯…

軟件包安裝管理Gitlab

官方提供了非常詳盡的系統及自動化腳本安裝教程 Gitlab官網下載地址&#xff1a;https://gitlab.cn/install/ 1、安裝配置 今天我們說一下包安裝管理&#xff0c;這樣方便我們自己更精確的制定符合我們自己需要的Gitlab倉庫 配置&#xff1a;ubuntu2004(focal) 4C8G 下載程…

hadoop執行sqoop任務找不到jar

sqoop:1.4.7 hadoop:3.4.1 數據:oracel-hdfs 2025-04-15 16:57:00,850 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 2025-04-15 16:57:00,901 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 2025-04-15 …

空地機器人在復雜動態環境下,如何高效自主導航?

隨著空陸兩棲機器人(AGR)在應急救援和城市巡檢等領域的應用范圍不斷擴大&#xff0c;其在復雜動態環境中實現自主導航的挑戰也日益凸顯。對此香港大學王俊銘基于阿木實驗室P600無人機平臺自主搭建了一整套空地兩棲機器人&#xff0c;使用Prometheus開源框架完成算法的仿真驗證與…

MCP調用示例-GitHub倉庫操作

在上一篇文章MCP核心概念和應用 ———AI 大模型的標準化工具箱里&#xff0c;我們講述了MCP的安裝&#xff0c;現在讓我們試一試通過示例了解它的功能吧&#xff01; 首先確保你已經有了相應的APIKEY。 &#x1f4a1;大模型中轉API推薦 ?中轉使用教程 1、點擊界面上的 「Done…

zk源碼—5.請求的處理過程一

大綱 1.服務器的請求處理鏈 (1)Leader服務器的請求處理鏈 一.PrepRequestProcessor請求預處理器 二.ProposalRequestProcessor事務投票處理器 三.SyncRequestProcessor事務日志處理器 四.AckRequestProcessor投票反饋處理器 五.CommitProcessor事務提交處理器 六.ToBeA…

小程序獲取用戶總結(全)

獲取方式 目前小程序獲取用戶一共有3中(自己接觸到的),但由于這個API一直在改,所以不確定后期是否有變動,還是要多關注官方公告。 方式一 使用wx.getUserInfo 實例: wxml 文件<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo&quo…

[LeetCode 1871] 跳躍游戲 7(Ⅶ)

題面&#xff1a; 數據范圍&#xff1a; 2 ≤ s . l e n g t h ≤ 1 0 5 2 \le s.length \le 10^5 2≤s.length≤105 s [ i ] s[i] s[i] 要么是 ′ 0 ′ 0 ′0′ &#xff0c;要么是 ′ 1 ′ 1 ′1′ s [ 0 ] 0 s[0] 0 s[0]0 1 ≤ m i n J u m p ≤ m a x J u m p <…

【Linux】基礎 IO(文件描述符、重定向、緩沖區)

Linux 1.理解文件2.C文件接口1.打開 寫文件2.讀文件 簡單實現cat命令3.輸出信息到顯示器的方式4.stdin、stdout、stderr5.打開文件的方式 3.系統接口 IO1.傳遞標志位2.open、close3.write、read 4.文件描述符1.是什么&#xff1f;2.分配規則3.重定向原理4.通過dup2系統調用重…

Apache Doris SelectDB 技術能力全面解析

Apache Doris 是一款開源的 MPP 數據庫&#xff0c;以其優異的分析性能著稱&#xff0c;被各行各業廣泛應用在實時數據分析、湖倉融合分析、日志與可觀測性分析、湖倉構建等場景。Apache Doris 目前被 5000 多家中大型的企業深度應用在生產系統中&#xff0c;包含互聯網、金融、…

交換機與路由器的默契配合:它們的聯系與區別

交換機與路由器的默契配合&#xff1a;它們的聯系與區別 一. 交換機與路由器的基本功能1.1 交換機的功能1.2 路由器的功能 二. 交換機和路由器的區別三. 交換機和路由器的聯系3.1 數據轉發的協作3.2 網絡分段與分隔3.3 協同工作提供互聯網接入 四. 交換機和路由器的聯合應用場景…