pip install mathutils 安裝 Blender 的 mathutils 模塊時,編譯失敗了

你遇到的問題是因為你試圖通過 pip install mathutils 安裝 Blender 的 mathutils 模塊時,編譯失敗了,主要原因是:


2018年 的老版本也不行
pip install mathutils==2.79
?

? 報錯核心總結:

  1. 缺失頭文件 BLI_path_util.h

    fatal error C1083: 無法打開包括文件: “BLI_path_util.h”: No such file or directory
    

    這個頭文件是 Blender 的內部頭文件,mathutils 是 Blender 源碼中的一個 C 模塊,它依賴很多 Blender 自帶的頭文件和庫文件。

  2. 函數 finite 未定義

    warning C4013: “finite”未定義;假設外部返回 int
    

    說明缺少對 <float.h> 或者 <math.h> 等庫的包含。雖然只是 warning,但也顯示出 mathutils 編譯環境配置并不完整。

  3. 你的環境是 Windows + Anaconda + Visual Studio 2017
    這套環境對于這種強依賴 Blender 的 C 擴展編譯非常容易出錯,除非你完整設置了 Blender 編譯環境。


? 解決方案建議:

? 方案一(推薦):使用 Blender 自帶的 mathutils

mathutils 本身是 Blender 內置模塊,如果你只是想在 Python 腳本中用它,推薦你 通過 Blender 的 Python 來使用它

# 使用 Blender 自帶的 Python
blender --python-console

然后在里面可以直接:

from mathutils import Vector, Matrix

或者你寫一個腳本 test.py

from mathutils import Vector
v = Vector((1, 2, 3))
print(v.length)

運行方式:

blender --background --python test.py

? 方案二:使用 numpy 替代 mathutils

如果你只是為了矩陣、向量、四元數等數學計算,可以直接用 numpyscipy.spatial.transform.Rotation 替代,示例:

import numpy as np
from scipy.spatial.transform import Rotationv = np.array([1, 2, 3])
r = Rotation.from_euler('xyz', [90, 0, 0], degrees=True)
rotated = r.apply(v)
print(rotated)

? 方案三(不推薦):手動配置 Blender 編譯環境再安裝

理論上你可以:

  • 下載 Blender 完整源碼

  • 安裝相同版本的 CMake、依賴庫、預編譯環境

  • 配置所有 INCLUDE_PATHLIB_PATH

  • 然后手動 python setup.py install

但這工作量非常大,完全不適合只想用 mathutils 的普通用戶


? 總結:

方案推薦度說明
使用 Blender 自帶 Python?????完美兼容,不需要自己編譯
使用 numpy 替代????無需 Blender,僅用于數學計算場景
手動編譯 Blender + mathutils?不建議,極度復雜

如果你告訴我你安裝 mathutils 是要干嘛用的(比如要處理動作捕捉數據、Blender 中建模、或是機器人仿真),我可以幫你選出最輕松的替代方案。你也可以考慮直接在 Blender Python 中運行腳本。需要的話我可以幫你寫。


?

Blender 自帶的 Python 版本因 Blender 的不同版本而有所不同。例如,Blender 3.1 自帶的 Python 版本為 3.10,Blender 4.0.2 自帶的 Python 版本為 3.10.13,Blender 5.0 自帶的 Python 版本為 3.12.0。

Blender 自帶的 Python 環境是獨立的,可以安裝其他類庫,以下是一些安裝方法:

### 使用 Blender 自帶的 Python.exe 安裝

找到 Blender 的 Python 可執行程序所在的位置,其默認路徑在不同系統和 Blender 版本下有所不同,如在 Windows 系統下,Blender 3.1 的默認路徑為 `C:\Program Files\Blender Foundation\Blender 3.1\3.1\python\bin\python.exe`。打開終端或命令提示符,進入該路徑所在目錄,然后運行以下命令來安裝庫:

```bash
python.exe -m pip install 庫名稱
```

### 在 Blender 的 Python 控制臺中安裝

打開 Blender 的 Python 控制臺,輸入以下代碼來安裝需要的庫:

```python
import subprocess
import sys
import os
python_exe = os.path.join(sys.prefix, 'bin', 'python.exe')
subprocess.call([python_exe, "-m", "ensurepip"])
subprocess.call([python_exe, "-m", "pip", "install", "--upgrade", "pip"])
subprocess.call([python_exe, "-m", "pip", "install", "庫名稱"])
```

### 使用虛擬環境安裝

可以使用 Conda 或 Virtualenv 創建一個與 Blender 的 Python 版本相匹配的虛擬環境,然后在該虛擬環境中安裝所需的庫,再將 Blender 與創建的虛擬環境關聯起來。

### 手動復制安裝

如果某些庫無法直接通過上述方法在 Blender 的 Python 環境中安裝,可以在系統的 Python 環境中安裝該庫,然后將安裝后的庫文件手動復制到 Blender 的 Python 環境對應的 `site-packages` 目錄下。


? 注意事項:

? 第三步(可選):讓腳本直接運行在 Blender 中

雖然你可以在 PyCharm 中寫代碼并使用 Blender 的解釋器調試,但要真正使用 mathutils 的全部功能(如矩陣和場景交互)還必須通過 Blender 啟動腳本

寫好腳本 test.py 后,可在命令行運行:

blender --background --python test.py

如果你告訴我你要在 PyCharm + mathutils 中實現什么功能(比如動作計算、仿真、三維矩陣處理),我可以直接幫你配好環境和測試腳本。

"C:\Program Files\Blender Foundation\Blender 3.6\3.6\python\bin\python.exe" -m ensurepip

然后安裝你需要的包:

"C:\Program Files\Blender Foundation\Blender 3.6\3.6\python\bin\python.exe" -m pip install numpy

  • pycharm中如何設置 blender中的python編譯器

    在 PyCharm 中使用 Blender 自帶的 Python 解釋器(從而能用 mathutils 模塊),你可以按照以下步驟設置:


    ? 第一步:找到 Blender 自帶的 Python 解釋器路徑

    Blender 自帶的 Python 解釋器通常在:

    <Blender安裝目錄>\blender\3.6\python\bin\python.exe
    

    例如(Windows 默認安裝):

    C:\Program Files\Blender Foundation\Blender 3.6\3.6\python\bin\python.exe
    

    如果你沒找到,可以在 Blender 中打開腳本編輯器,執行以下代碼查看路徑:

    import sys
    print(sys.executable)
    

    ? 第二步:在 PyCharm 中添加解釋器

  • 打開 PyCharm → FileSettings(設置)

  • 點擊左側:Project: XXXPython Interpreter

  • 點擊右側齒輪圖標 ? → Add...

  • 選擇 System Interpreter

  • 瀏覽并選擇上面提到的 Blender 自帶 python.exe

  • 點擊 OK,PyCharm 會索引解釋器

  • Blender 自帶 Python 環境非常干凈,沒有 pip,也沒有 numpy 等常用模塊。

  • 如果你需要安裝包(比如 numpy),可以先在 Blender 的 Python 中手動安裝 pip:

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

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

相關文章

編譯安裝交叉工具鏈 riscv-gnu-toolchain

參考鏈接&#xff1a; https://zhuanlan.zhihu.com/p/258394849 1&#xff0c;下載源碼 git clone https://gitee.com/mirrors/riscv-gnu-toolchain 2&#xff0c;進入目錄 cd riscv-gnu-toolchain 3&#xff0c;去掉qemu git rm qemu 4&#xff0c;初始化 git submodule…

復制 生成二維碼

一、安裝插件 1、復制 npm install -g copy-to-clipboard import copy from copy-to-clipboard; 2、生成二維碼 & 下載 npm install -g qrcode import QRCode from qrcode.react; 二、功能&#xff1a;生成二維碼 & 下載 效果圖 1、常規使用&#xff08;下載圖片模糊…

自由職業的經營視角

“領導力的核心是幫助他人看到自己看不到的東西。” — 彼得圣吉 最近與一些自由職業者的交流中&#xff0c;發現很多專業人士都會從專業視角來做交流&#xff0c;這也讓我更加理解我們海外戰略顧問莊老師在每月輔導時的提醒——經營者視角和專業人士視角的不同。這不僅讓大家獲…

MR30分布式 IO在物流堆垛機的應用

在現代物流行業蓬勃發展的浪潮中&#xff0c;物流堆垛機作為自動化倉儲系統的核心設備&#xff0c;承擔著貨物的高效存取與搬運任務。它憑借自動化操作、高精度定位等優勢&#xff0c;極大地提升了倉儲空間利用率和貨物周轉效率。然而&#xff0c;隨著物流行業的高速發展&#…

告別固定密鑰!在單一賬戶下用 Cognito 實現 AWS CLI 的 MFA 單點登錄

大家好&#xff0c;很多朋友&#xff0c;特別是通過合作伙伴或服務商使用 AWS 的同學&#xff0c;可能會發現自己的 IAM Identity Center 功能受限&#xff0c;無法像在組織管理賬戶里那樣輕松配置 CLI 的 SSO (aws configure sso)。那么&#xff0c;我們就要放棄治療&#xff…

未來機器視覺軟件將更注重成本控制,邊緣性能,魯棒性、多平臺支持、模塊優化與性能提升,最新版本opencv-4.11.0更新了什么

OpenCV 4.11.0 作為 4.10.0 的后續版本,雖然沒有在提供的搜索結果中直接列出詳細更新內容,但結合 OpenCV 4.10.0 的重大改進方向(發布于 2024 年 6 月),可以合理推斷 4.11.0 版本可能延續了對多平臺支持、模塊優化和性能提升的強化。以下是基于 OpenCV 近期更新模式的推測…

小程序入門:數據請求全解析

在微信小程序開發中&#xff0c;數據請求是實現豐富功能的關鍵環節。本文將帶你深入了解小程序數據請求的相關知識&#xff0c;包括請求限制、配置方法以及不同請求方式的實現&#xff0c;還會介紹如何在頁面加載時自動請求數據&#xff0c;同時附上詳細代碼示例&#xff0c;讓…

開源版gpt4o 多模態MiniGPT-4 實現原理詳解

MiniGPT-4是開源的GPT-4的平民版。本文用帶你快速掌握多模態大模型MiniGPT-4的模型架構、訓練秘訣、實戰亮點與改進方向。 1 模型架構全景&#xff1a;三層協同 &#x1f4ca; 模型底部實際輸入圖像&#xff0c;經 ViT Q-Former 編碼。藍色方塊 (視覺編碼器)&#xff1a;左側…

Flutter基礎(控制器)

第1步&#xff1a;找個遙控器&#xff08;創建控制器&#xff09;? // 就像買新遙控器要裝電池 TextEditingController myController TextEditingController(); ??第2步&#xff1a;連上你的玩具&#xff08;綁定到組件&#xff09;?? TextField(controller: myContro…

Spring Boot使用Redis常用場景

Spring Boot使用Redis常用場景 一、概述&#xff1a;Redis 是什么&#xff1f;為什么要用它&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一個內存中的數據存儲系統&#xff08;類似一個“超級大字典”&#xff09;&#xff0c;它能存各種類型的數據…

CAD文件處理控件Aspose.CAD教程:在 C# 中將 DXF 文件轉換為 SVG - AutoCAD C# 示例

概述 使用 C# 輕松將DXF文件轉換為SVG。此轉換可更好地兼容 Web 應用程序&#xff0c;并增強 CAD 圖紙的視覺呈現效果。使用Aspose.CAD for .NET &#xff0c;開發人員可以輕松實現此轉換過程。該 SDK 提供強大的功能&#xff0c;使其成為 C# 開發人員的可靠選擇。Aspose.CAD …

Gitee 持續集成與交付(CI/CD)篇

Gitee 持續集成與交付&#xff08;CI/CD&#xff09;篇 &#x1f680; 文章目錄 Gitee 持續集成與交付&#xff08;CI/CD&#xff09;篇 &#x1f680;&#x1f3af; 什么是 CI/CD&#xff1f;&#x1f31f; Gitee Go 介紹? 核心特性&#x1f3a8; 支持的技術棧 &#x1f680;…

深度學習:PyTorch卷積神經網絡圖像分類案例分享

本文目錄&#xff1a; 一、了解CIFAR-10數據集二、案例之導包三、案例之創建數據集四、案例之搭建神經網絡&#xff08;模型構建&#xff09;五、案例之編寫訓練函數&#xff08;訓練模型&#xff09;六、案例之編寫預測函數&#xff08;模型測試&#xff09; 前言&#xff1a;…

記錄多功能按鍵第二種寫法使用定時器周期間隔判斷.

邏輯是通過定時器溢出周期進行判斷按下次數 比如設置定時器溢出周期為500MS,每次溢出都會判斷按鍵按下次數,如果下個周期前沒有觸發按下,則結束鍵值判斷.并確定觸發鍵值.清空按下次數標志.測試比一個定時器周期按下按鍵次數判斷寫法要穩定... 記錄STM32實現多功能按鍵_stm32一…

【安卓Sensor框架-1】SensorService 的啟動流程

內核啟動后&#xff0c;首個用戶空間進程init&#xff08;pid1&#xff09;解析init.rc配置文件&#xff0c;啟動關鍵服務&#xff08;如Zygote和ServiceManager&#xff09;。 Zygote服務配置為/system/bin/app_process --zygote --start-system-server&#xff0c;后續用于孵…

centos網卡綁定參考

同事整理分享&#xff1a; 1. 加載 Bonding 模塊 modprobe bonding 獲取網卡名稱 ip a 找到接了網線的網卡名稱&#xff0c;記下。 3. 配置物理網卡 創建并編輯 /etc/sysconfig/network-scripts/ifcfg-ens36&#xff08;ifcfg-后面的內容根據上面找到的具體網卡名稱決定&#…

mbedtls ssl handshake error,res:-0x2700

用LinkSDK.c連接第三方云平臺出現現象 解決方案&#xff1a; 在_tls_network_establish函數中加入 mbedtls_ssl_conf_authmode(&adapter_handle->mbedtls.ssl_config, MBEDTLS_SSL_VERIFY_NONE);原因解釋&#xff1a;用連接方式是不用證書認證/跳過服務端認證。

Spring Security 的方法級權限控制是如何利用 AOP 的?

Spring Security 的方法級權限控制是 AOP 技術在實際應用中一個極其強大的應用典范。它允許我們以聲明式的方式保護業務方法&#xff0c;將安全規則與業務邏輯徹底解耦。 核心思想&#xff1a;權限檢查的“門衛” 你可以把 AOP 在方法級安全中的作用想象成一個盡職盡責的“門…

一鍵內網穿透,無需域名和服務器,自動https訪問

cloudflare能將內網web轉為外網可訪問的地址。&#xff08;這和apiSQL有點類似&#xff0c;apiSQ可以將內網數據庫輕松轉換為外網的API&#xff0c;并且還支持代理內網已有API&#xff0c;增強安全增加API Key&#xff0c;以https訪問等等&#xff09; 但Cloudfalre tunnel這個…

Sentinel(二):Sentinel流量控制

一、Sentinel 流控規則基本介紹 1、Snetinel 流控規則配置方式 Sentinel 支持可視化的流控規則配置&#xff0c;使用非常簡單&#xff1b;可以在監控服務下的“簇點鏈路” 或 “流控規則” 中 給指定的請求資源配置流控規則&#xff1b;一般推薦在 “簇點鏈路” 中配置流控規則…