你遇到的問題是因為你試圖通過 pip install mathutils
安裝 Blender 的 mathutils
模塊時,編譯失敗了,主要原因是:
2018年 的老版本也不行
pip install mathutils==2.79
?
? 報錯核心總結:
-
缺失頭文件
BLI_path_util.h
:fatal error C1083: 無法打開包括文件: “BLI_path_util.h”: No such file or directory
這個頭文件是 Blender 的內部頭文件,
mathutils
是 Blender 源碼中的一個 C 模塊,它依賴很多 Blender 自帶的頭文件和庫文件。 -
函數
finite
未定義:warning C4013: “finite”未定義;假設外部返回 int
說明缺少對
<float.h>
或者<math.h>
等庫的包含。雖然只是 warning,但也顯示出 mathutils 編譯環境配置并不完整。 -
你的環境是 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
如果你只是為了矩陣、向量、四元數等數學計算,可以直接用 numpy
或 scipy.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_PATH
、LIB_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 →
File
→Settings
(設置) -
點擊左側:
Project: XXX
→Python Interpreter
-
點擊右側齒輪圖標 ? →
Add...
-
選擇
System Interpreter
-
瀏覽并選擇上面提到的
Blender 自帶 python.exe
-
點擊 OK,PyCharm 會索引解釋器
-
Blender 自帶 Python 環境非常干凈,沒有 pip,也沒有 numpy 等常用模塊。
-
如果你需要安裝包(比如 numpy),可以先在 Blender 的 Python 中手動安裝 pip: