【问题标题】:Error ".onLoad failed in loadNamespace() for 'tcltk'"错误“.onLoad 在 'tcltk' 的 loadNamespace() 中失败”
【发布时间】:2014-08-08 21:54:14
【问题描述】:

我有一个关于如何有效地将任何类型的外部包加载到 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 中的更普遍问题。

【问题讨论】:

  • 错误信息告诉你它无法加载 tcltk 包。你安装了吗?可以加载吗?
  • manipulate 不是 RStudio 的推荐 gui 包吗?
  • @joran 我刚刚尝试在运行其他命令之前插入install.packages("tcltk2", lib="~/Documents/R_dir"),仍然是同样的错误。另外,install.packages("tcltk", lib="~/Documents/R_dir") Warning in install.packages : package ‘tcltk’ is not available (for R version 3.1.1)
  • @KarstenW。一般来说,如果我想在 R 之外的其他东西中为我的 R 代码创建一个 GUI,比如说我想在 wxpython 中创建一个 GUI,这可能吗?
  • 你有没有注意到那个包近两年没有更新了,它的网站似乎不存在,并且它声称要导入一个已经被删除的包(tcltk) CRAN 并用 tcltk2 替换(我想)?这些都可能是很好的警告信号。

标签: r tk cran


【解决方案1】:

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
    

如果系统命令的输出如上所示,您应该进入终端并执行以下操作:sudo chmod -R a+rX /usr/local 并输入您的密码以更改目录权限。

  1. 您的 X-Windows 版本过时。尝试运行 Mac OS 软件更新。

也可以通过创建符号链接as described in this answer来解决。

这不应该出现在 Windows 上,除非您在没有 tcl/tk 支持的情况下从源代码构建 R。

【讨论】:

  • 上面的capabilities 命令对我来说很好用。我正在使用 MacOSX 并查看了上面的链接。事实上,我得到的tcltk 错误与该链接底部发布的错误非常相似。但是,运行system("ls -ld /usr/local /usr/local/lib /usr/local/lib/libtcl*") 不会为我返回任何文件权限错误,并且执行sudo chmod -R a+rX /usr/local 以仔细检查并重新运行所有内容并不能解决问题。输入 library(tcltk) 无论如何都会返回错误,Error: package or namespace load failed for ‘tcltk’
  • @Thomas 我知道这是一篇旧帖子,但是......我在 Windows 上有错误。通过anaconda navigator安装R(rpy2的依赖)
【解决方案2】:

official installation instructions for R 说:

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

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

【讨论】:

    【解决方案3】:
    1. 删除位置上的 X11 文件:/opt
    2. 删除应用程序单元上的 X11
    3. 重新安装 X11

    问题解决了……

    【讨论】:

      【解决方案4】:

      在 Arch Linux 上,tk 是独立于 tcl 的软件包,两者都需要安装:

      sudo pacman -S tcl tk
      

      这是因为 capabilities("tcltk") 与 R 的输出是 TRUE (这意味着您的 R 是使用 tcltk 支持编译的,如前面的答案中所述,如果您从拱回购)。

      【讨论】:

        【解决方案5】:

        对于 Mac-OS 用户:

        最近纠结这个问题,发现R-3.1.2有个bug,假设otool安装了,其实没有安装。

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

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

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,并在发现一个简单的解决方法之前陷入了困境。如果您从 bianry 安装 R,它将默认包含 tcltk。只需使用默认安装运行安装程序。您可以在此处获取 .dmg:https://cran.r-project.org/bin/macosx/

          【讨论】:

            猜你喜欢
            • 2015-01-02
            • 2018-01-25
            • 2015-12-03
            • 2016-10-10
            • 2019-05-29
            • 1970-01-01
            • 2015-07-08
            相关资源
            最近更新 更多