项目场景:
ModuleNotFoundError: No module named ‘mathutils‘
Mathutils 用pip和conda都没法下载。
解决方案:
去git克隆mathutils:
git clone https://gitlab.com/ideasman42/blender-mathutils.git
cd blender-mathutils/
python setup.py build
python setup.py install
这时候会跳Error:
src/mathutils/mathutils.c:79:24: error: incompatible type for argument 1 of ‘_Py_HashDouble’
参考weixin_45714660的解决方法,打开文件src/mathutils/mathutils.c,把第79行改成:
y = _Py_HashDouble((double)(array[i++]));
继续安装,跳新Error:
undefined symbol: PyModule_AddType
参考NB_newbie的解决方法,打开文件src\mathutils\mathutils.c,把PyModule_AddType全部注释掉,重新安装,即可成功。
去另一个环境重新装一次,结果又遇到了完全不同的问题,给我整懵了……
参考Q_pril的解决方法,仍然需要把:
- 79行的NULL修改掉
- 把PyModule_AddType改成PyModule_AddObject
除此之外还有一个步骤: - 把PyModule_AddObject参数改成三个,中间设置一个参数接收moudle名称,要记得在前面先初始化
mod_name
char *mod_name;
/* each type has its own new() function */
PyModule_AddObject(mod, mod_name, &vector_Type);
PyModule_AddObject(mod, mod_name, &matrix_Type);
PyModule_AddObject(mod, mod_name, &euler_Type);
PyModule_AddObject(mod, mod_name, &quaternion_Type);
PyModule_AddObject(mod, mod_name, &color_Type);
以上步骤执行完成后,如果按distutils方法行不通,可以用cmake来安装:
# CMake:
cmake .
make
sudo make install