首页 > 解决方案 > 无法在 Macbook 上加载 tidycensus 和地图视图包

问题描述

我在 RStudio 中安装了这些包tidycensusmapview但是当我尝试加载任一包时出现以下错误:

library(tidycensus)

错误:dyn.load(文件,DLLpath = DLLpath,...)中“tidycensus”的包或命名空间加载失败:无法加载共享对象“/Library/Frameworks/R.framework/Versions/4.0/Resources/library/ sf/libs/sf.so':dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/library/sf/libs/sf.so, 6):库未加载:/usr/lib/libpq。 5.dylib 引用自:/Library/Frameworks/R.framework/Versions/4.0/Resources/library/sf/libs/sf.so 原因:找不到图片

library(mapview)

错误:dyn.load(文件,DLLpath = DLLpath,...)中“mapview”的包或命名空间加载失败:无法加载共享对象“/Library/Frameworks/R.framework/Versions/4.0/Resources/library/ sf/libs/sf.so':dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/library/sf/libs/sf.so, 6):库未加载:/usr/lib/libpq。 5.dylib 引用自:/Library/Frameworks/R.framework/Versions/4.0/Resources/library/sf/libs/sf.so 原因:找不到图片

我已经尝试过这个解决方案,但它并没有解决我的问题。

标签: rpackagelibpq

解决方案


今天升级到 Big Sur 时,这个问题确实发生在我身上。经过研究,我终于在这里找到了解决方案:

将 libpq.5.dylib 复制到 /usr/lib/libpq.5.dylib

看起来 macOS 正在/usr/lib关闭库。基本上需要指向/usr/lib/libpq.5.dylib另一个libpq,比如你通过 Homebrew 安装它得到的那个。

这对我有用,首先在 R 中卸载sfrgdal打包,并在需要时使用 HomeBrew 进行安装libpq

$ brew install libpq

检查库是否指向自身:

$ otool -l /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib | fgrep -A2 LC_ID_DYLIB

如果不是,请将其指向自身:

$ sudo install_name_tool -id /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib

并将新路径链接libpq到引用它的每个 R 包二进制文件:

$ sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]

在这种情况下,对于sfrgdal

$ sudo install_name_tool -change /usr/lib/libpq.5.dylib /usr/local/Cellar/libpq/13.1/lib/libpq.5.dylib /Library/Frameworks/R.framework/Versions/4.0/Resources/library/sf/libs/sf.so

$ sudo install_name_tool -change /usr/lib/libpq.5.dylib /usr/local/Cellar/libpq/13.1/lib/libpq.5.dylib /Library/Frameworks/R.framework/Versions/4.0/Resources/library/rgdal/libs/rgdal.so

推荐阅读