r - 无法在 Macbook 上加载 tidycensus 和地图视图包
问题描述
我在 RStudio 中安装了这些包tidycensus
,mapview
但是当我尝试加载任一包时出现以下错误:
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 原因:找不到图片
我已经尝试过这个解决方案,但它并没有解决我的问题。
解决方案
今天升级到 Big Sur 时,这个问题确实发生在我身上。经过研究,我终于在这里找到了解决方案:
将 libpq.5.dylib 复制到 /usr/lib/libpq.5.dylib
看起来 macOS 正在/usr/lib
关闭库。基本上需要指向/usr/lib/libpq.5.dylib
另一个libpq
,比如你通过 Homebrew 安装它得到的那个。
这对我有用,首先在 R 中卸载sf
和rgdal
打包,并在需要时使用 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]
在这种情况下,对于sf
和rgdal
:
$ 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
推荐阅读
- java - IllegalAccessError 仅在 AsyncTask 内的 Android 9 上
- visual-studio-2015 - 如何在 Visual Studio 2015 中按顺序运行 mstest 单元测试?
- laravel - laravel 中用户'root'@'localhost'的访问被拒绝(使用密码:YES)
- javascript - CSS - 定义打印画布
- swift - 有什么方法可以为 iOS 10 及更高版本将字距设置为 SKLabelNode?
- php - 如何在php中打印一个数组?
- php - Laravel 迁移无法创建外键
- javascript - 当在脚本加载和用户自己添加标签时添加标签时,yairEO/tagify 相同的事件
- python - 如何从单个标签中获取多个属性数据?
- kubernetes - 服务帐户无法删除资源,即使它应该有权这样做