0

我正在尝试在 Mac OS High Sierra 上安装软件包 nloptr 以使用许多不错的软件包,例如 lme4,并且我在 Anaconda 中使用 RStudio 和 R 3.4.2。我也安装了NLopt(从NLopt网站下载,不是开发版。我也安装了Xcode命令行工具。但是我仍然无法安装nloptr,并得到这个

Error: package or namespace load failed for ‘nloptr’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so':
dlopen(/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so, 6): Symbol not found: _nlopt_add_equality_mconstraint
Referenced from: /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so
Expected in: flat namespace
in /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so

我已经在网上搜索了要做什么,并且确实将安装 NLopt 的路径添加到/etc/ldpaths文件中的 LD_LIBRARY_PATH 中,但我仍然得到同样的错误。是的,我遇到了与Trouble installation nloptr package on R 3.3.0中相同的问题,但我没有找到适用的解决方案,因为提出这个问题的人自己解决了这个问题,我不知道他什么时候说的他说“以root身份安装”。任何人都可以帮忙吗?

另外,在使用 CMake 安装 NLopt 时,我得到了类似的东西,这发生在许多不同的功能上:

In file included from f77api.c:103:
./f77funcs.h:57:14: warning: 'nlopt_minimize_constrained' is deprecated
  [-Wdeprecated-declarations]
 *info = nlopt_minimize_constrained((nlopt_algorithm) *algorithm, 
         ^
./nlopt.h:348:35: note: 'nlopt_minimize_constrained' has been explicitly marked
  deprecated here
 int maxeval, double maxtime) NLOPT_DEPRECATED;
                              ^
./nlopt.h:320:43: note: expanded from macro 'NLOPT_DEPRECATED'
#  define NLOPT_DEPRECATED __attribute__((deprecated))
                                      ^

这就是没有加载库的原因吗?

顺便说一句,我已经安装了 Rcpp 并对其进行了更新。Rcpp 在我的电脑上工作。

更新:我将默认的 C 和 C++ 编译器更改为从 R 项目下载的 clang4。我再次尝试安装,并得到一个不同的错误:

Error: package or namespace load failed for ‘nloptr’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so':
dlopen(/Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so, 6): Library not loaded: @rpath/libnlopt.0.dylib
Referenced from: /Users/lambda/anaconda3/lib/R/library/nloptr/libs/nloptr.so
Reason: image not found
Error: loading failed

我试图告诉 R 图书馆在哪里Sys.geteng(DYLD_LIBRARY_PATH = "/usr/local/lib"),但它没有用。根据我从安装中得到的消息,实际上 R 确实知道共享库在哪里,但它就是无法加载它。请帮忙!

4

1 回答 1

0

没关系,我重新安装了 Anaconda,并安装了独立的 R 和 RStudio(不在 Anaconda 中),这些软件包都安装成功。也许在 Anaconda 中使用 RStudio 是个坏主意。

编辑:对于那些遇到类似情况的人:我切换到 Microsoft R Open (MRO),因为我最近处理了很多线性代数。然后,当我尝试在 MRO 中安装 nloptr 时,我收到了类似的错误消息,共享库无法加载,因为找不到图像。我重新安装了 CRAN R 3.4.3,nloptr 安装得很好。所以我找到了 nloptr 在 CRAN R 3.4.3 中的安装位置.libPaths(),将 nloptr 文件夹复制到 MRO 存储包的位置,并使用实用程序 RSwitch 将 R 的默认版本更改为 MRO。然后我在 MRO 中加载了 nloptr,安装了依赖它的包,并使用了这些包;他们工作得很好。我不知道导致错误的 MRO 有什么问题,但至少这有效。

于 2017-11-22T04:31:16.067 回答