升级libtiff后启动Django服务器出现依赖错误,如何解决?
问题:brew升级后启动Django服务器出现libtiff版本不匹配错误
执行brew升级操作后,启动Django服务器时抛出以下错误:
OSError: dlopen(/usr/local/opt/gdal/lib/libgdal.dylib, 0x0006): Library not loaded: /usr/local/homebrew/opt/libtiff/lib/libtiff.5.dylib Referenced from: <33E7E7D2-EDA5-33CC-AFB4-2F35C8A1E369> /usr/local/opt/gdal/lib/libgdal.32.3.6.4.dylib Reason: tried: '/usr/local/homebrew/opt/libtiff/lib/libtiff.5.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/homebrew/opt/libtiff/lib/libtiff.5.dylib' (no such file), '/usr/local/homebrew/opt/libtiff/lib/libtiff.5.dylib' (no such file), '/usr/local/lib/libtiff.5.dylib' (no such file), '/usr/lib/libtiff.5.dylib' (no such file, not in dyld cache), '/usr/local/homebrew/Cellar/libtiff/4.5.1/lib/libtiff.5.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/homebrew/Cellar/libtiff/4.5.1/lib/libtiff.5.dylib' (no such file), '/usr/local/homebrew/Cellar/libtiff/4.5.1/lib/libtiff.5.dylib' (no such file), '/usr/local/lib/libtiff.5.dylib' (no such file), '/usr/lib/libtiff.5.dylib' (no such file, not in dyld cache)
检查对应路径后发现,当前系统安装的libtiff为6.x版本,文件列表如下:
$ pwd /usr/local/homebrew/opt/libtiff/lib $ ls libtiff.6.dylib libtiffxx.6.dylib pkgconfig libtiff.a libtiffxx.a libtiff.dylib libtiffxx.dylib
而GDAL仍依赖旧版本的libtiff.5.dylib,GDAL目录文件列表:
$ pwd /usr/local/opt/gdal/lib $ ls cmake libgdal.32.dylib python3.11 gdalplugins libgdal.dylib libgdal.32.3.6.4.dylib pkgconfig
解决方案
方法1:重新安装GDAL(推荐)
brew升级后libtiff版本更新,但GDAL未重新编译适配新版本,重新安装GDAL可让它链接到当前的libtiff.6.dylib:
brew reinstall gdal
安装完成后重启Django服务器即可。
方法2:创建软链接(临时应急方案)
若暂时不想重新安装GDAL,可手动创建软链接让系统找到对应库文件:
cd /usr/local/homebrew/opt/libtiff/lib ln -s libtiff.6.dylib libtiff.5.dylib ln -s libtiffxx.6.dylib libtiffxx.5.dylib
注意:此方法仅为临时 workaround,后续再次升级brew或相关库时可能再次出现问题,优先使用方法1。
方法3:清理dyld缓存并重启
若以上方法无效,可尝试清理系统动态链接缓存:
sudo rm -rf /Library/Caches/com.apple.dyld sudo reboot
内容的提问来源于stack exchange,提问作者Aquib Ansari
相关产品推荐
相关产品推荐

