Python2.7导入matplotlib._qhull报库未加载且不影响Python3的解决方法
问题根源
你使用的Python2.7为MacPorts分发版本,其搭载的matplotlib依赖libqhull.8.0.dylib动态库:
- brew安装的qhull默认存储在brew专属路径下,不会写入MacPorts使用的
/opt/local/lib目录,因此重装brew版qhull无法解决问题 /opt/local/lib下现存的qhull库版本与matplotlib要求的8.0版本不匹配,导致动态库加载失败
解决方案(均不影响Python3配置)
方案一:修改_qhull.so的依赖路径(最稳妥,无全局修改)
仅修改matplotlib的_qhull.so文件中写死的动态库查找路径,不会改动任何系统全局配置或其他环境文件。
- 先确认/opt/local/lib下实际存在的qhull库版本:
ls /opt/local/lib/libqhull*.dylib
执行后会输出当前已安装的qhull库文件名,例如libqhull.9.0.dylib
2. 执行install_name_tool修改依赖路径,将示例中的libqhull.9.0.dylib替换为上一步查到的实际文件名:
install_name_tool -change /opt/local/lib/libqhull.8.0.dylib /opt/local/lib/libqhull.9.0.dylib /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/_qhull.so
修改完成后重新运行Python2.7的代码即可恢复正常。
方案二:安装匹配版本的MacPorts版qhull
如果方案一因版本跨度太大出现兼容问题,可以直接通过MacPorts安装8.0版本的qhull:
sudo port install qhull@8.0
该操作只会修改MacPorts专属的/opt/local目录下的文件,不会影响brew安装的Python3及其相关配置。
内容的提问来源于stack exchange,提问作者Shasa
相关产品推荐
相关产品推荐

