错误“.onLoad在loadNamespace()中失败'tcltk'”

时间:2014-08-08 21:54:15

标签: r tk cran

我有一个关于如何有效地将任何类型的外部包加载到R中的一般性问题。我发现许多详细说明这些信息的来源是不够的,但我将不再提及那些相应的URL。我之前已成功将外部软件包加载到R中,但我在加载fgui软件包时遇到了困难。

在我的具体情况下,我无法将库fgui加载到R Studio中。首先,我使用以下命令直接从CRAN下载:

install.packages("fgui", lib="~/Documents/R_dir")

这对我来说很好。我的工作目录设置为〜/ Documents / R_dir

我使用的下一个命令是:

library("fgui", lib.loc="~/Documents/R_dir")

我得到的错误是:

Error : .onLoad failed in loadNamespace() for 'tcltk', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so, 10): Library not loaded: /opt/X11/lib/libX11.6.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/tcltk/libs/tcltk.so
Reason: image not found
Error: package or namespace load failed for ‘fgui’

我已经检查了线程" Error when trying to load library(ggplot2) in R"但它没有回答我的问题。

请帮助我提供任何建议,让我们的程序包fgui在R Studio中正常运行,并随时解决有效将外部程序包加载到R中的更常见问题。

6 个答案:

答案 0 :(得分:15)

tcltk不是典型的套餐。它可能已安装在您的系统上,并且无法使用通常的install.packages过程进行安装,因为它不在CRAN上(就像R附带的基本软件包一样,如stats等) )。此外,tcltk2tcltk不同;这是一个扩展(并依赖于)tcltk的功能的包。

所以,从这开始:

> capabilities("tcltk")
tcltk 
 TRUE

如果返回FALSE,则表示您的R不是使用tcltk支持构建的。你不会说你正在使用什么操作系统,所以帮助你有点困难。

也就是说,如果您使用 Linux ,则需要重建R with tcltk support。这应该相对简单。基本上,确保系统上的Tcl和tk在标准位置(类似sudo apt-get install tcl8.5-dev tk8.5-dev)可用,然后按照常规程序重建R.

如果您使用 Mac OS ,则会遇到与John Fox describes here in relation to Rcmdr相同的错误。简而言之,它可能是两件事之一:

  1. 与安装了Tcl的目录相关的文件权限问题。引用Fox:"您可以通过在R命令提示符下发出以下命令来验证此问题的根源:

    system("ls -ld /usr/local /usr/local/lib /usr/local/lib/libtcl*")
    # ls: /usr/local/lib: Permission denied
    # ls: /usr/local/lib/libtcl*: Permission denied
    # drwx------  8 root  wheel  272 Sep 24 10:21 /usr/local
    
  2. 如果系统命令的输出如上所示,您应该转到终端并执行以下操作:sudo chmod -R a+rX /usr/local并输入您的密码以更改目录权限。

    1. 你有一个过时的X-Windows版本。尝试运行Mac OS软件更新。
    2. 通过创建符号链接as described in this answer也可以解决这个问题。

      除非您在没有tcl / tk支持的情况下从源代码构建R,否则永远不会出现 Windows

答案 1 :(得分:7)

official installation instructions for R说:

  

注意:使用X11(包括tcltk)需要XQuartz   安装,因为它不再是OS X的一部分。始终重新安装   将OS X升级到新的主要版本时的XQuartz。

所以:如果你想在R中使用tcltk包,只需(重新)安装XQuartz。

答案 2 :(得分:5)

  1. 删除位置上的X11文件:/ opt
  2. 删除应用程序单元上的X11
  3. 再次重新安装X11
  4. 问题解决了......

答案 3 :(得分:1)

对于Mac-OS用户:

我最近一直在努力解决这个问题,并发现R-3.1.2有一个错误,它假设 otool 安装时没有。

R-3.0.0(及更高版本)附带Tck / Tk 8.6.0,因此您无需安装。

只需升级到更新版本的R(3.4.2)即可解决问题。

答案 4 :(得分:1)

我遇到了同样的问题,在发现一个简单的修复方法之前掉了一个兔子洞。如果从bianry安装R,则默认情况下它将包括tcltk。只需使用默认安装运行安装程序。您可以在此处获取.dmg:https://cran.r-project.org/bin/macosx/

答案 5 :(得分:0)

在Arch Linux上,tk是与tcl不同的软件包,并且都需要安装:

sudo pacman -S tcl tk

假设capabilities("tcltk")中带有R的输出为TRUE(这意味着您的R是在tcltk支持下编译的,如前面在此处的答案所述,应该是这种情况如果您是从arch仓库安装的。)