错误 "在loadNamespace()中为'tcltk'加载失败的.onLoad"

15

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


2
错误信息告诉您无法加载tcltk包。您是否已安装它?您能否加载它? - joran
1
“manipulate” 不是 RStudio 推荐的 GUI 包吗? - Karsten W.
1
@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) - warship
1
你有没有注意到这个软件包已经近两年没有更新了,它的网站似乎也不存在了,而且它声称要导入一个已经从CRAN中删除并被tcltk2替代的软件包(tcltk)?这些都可能是相当明显的警告信号。 - joran
所以我们又回到无法安装tcltk的状态。错误信息非常清楚。而且tcltk不再在CRAN上了。这似乎令人不安,不是吗? - joran
显示剩余4条评论
7个回答

19
tcltk 不是一个典型的程序包。它可能已经安装在您的系统上,并且无法使用通常的 install.packages 程序进行安装,因为它不在 CRAN 上(就像随 R 一起提供的基本软件包,如stats等)。此外,tcltk2 不同于 tcltk;它是一个扩展(和依赖于)tcltk 功能的程序包。

因此,请从以下步骤开始:

> capabilities("tcltk")
tcltk 
 TRUE
如果返回值为FALSE,则表示您的 R 没有使用 tcltk 支持进行构建。由于您没有说明正在使用的操作系统,因此帮助您有些困难。

如果您使用的是Linux,则需要重新构建 R,并使用tcltk支持。这应该相对简单。基本上,确保 Tcl 和 tk 可在系统中的标准位置使用(例如sudo apt-get install tcl8.5-dev tk8.5-dev),然后按照通常的程序重建 R。

如果您使用的是Mac OS,那么您遇到了与John Fox 在 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 软件更新。

也可以通过创建符号链接 如此答案中所述 来解决此问题。

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


3
上述的 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’ - warship
1
@Thomas 我知道这是一个旧帖子,但是...我在Windows上遇到了错误。使用anaconda navigator安装的R(rpy2的依赖项) - Emmanuel-Lin
1
我使用以下技巧解决了这个问题:https://stackoverflow.com/questions/7074767/tcltk-in-portable-r - Emmanuel-Lin

8

R的官方安装说明中提到:

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

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


8
在 Arch Linux 上,tk 是一个独立的软件包,需要单独安装,同时还需要安装 tcl
sudo pacman -S tcl tk

假设您的R已经编译了tcltk支持,可以通过capabilities("tcltk")输出TRUE(如前面的答案所述,如果您从存储库中安装它,则应该是这种情况)。


5
  1. 删除位置为 /opt 的 X11 文件
  2. 在应用程序工具中删除 X11
  3. 重新安装 X11

问题已解决...


1
我曾经遇到同样的问题,一直在寻找解决方法,最终发现了一个简单的解决方案。如果你从二进制方式安装 R,则会默认包含 tcltk。只需使用默认安装选项运行安装程序即可。你可以在此处获取 .dmg 文件:https://cran.r-project.org/bin/macosx/

1

对于Mac-OS用户:

我最近遇到了这个问题,并发现R-3.1.2有一个bug,假设已安装otool,但实际上并没有。

R-3.0.0(及更高版本)附带Tck/T


0
最简单的方法适用于Mac用户:
1- 使用brew安装tcl-tk:
brew install tcl-tk

2- 运行以下代码:

ln -s /usr/local/Cellar/tcl-tk/$version/lib/libtcl8.6.dylib /usr/local/lib/libtcl8.6.dylib
ln -s /usr/local/Cellar/tcl-tk/$version/lib/libtk8.6.dylib /usr/local/lib/libtk8.6.dylib

问题解决了!

显然,在终端中运行第二段代码。另外,不要忘记在"$version" 部分键入您的版本号。要检查版本,请转到以下目录:/usr/local/Cellar/tcl-tk - Amir Valizadeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接