Ошибка ".onLoad не удалось в loadNamespace() для 'tcltk'"

У меня есть общий вопрос о том, как эффективно загрузить любой внешний пакет в 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’

Я изучил тему " Ошибка при попытке загрузить библиотеку (ggplot2) в R", но она не ответила на мой вопрос.

Пожалуйста, помогите мне с любыми предложениями, чтобы получить пакет fgui для правильной работы в R Studio и не стесняйтесь решать более общую проблему эффективной загрузки внешних пакетов в R.

7 ответов

Решение

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, вы сталкиваетесь с той же ошибкой, которую Джон Фокс описывает здесь в отношении Rcmdr. Короче говоря, это, вероятно, одна из двух вещей:

  1. Проблема с правами доступа к файлу, связанная с каталогом, в котором установлен Tcl. Процитируем Фокса: "Вы можете проверить источник этой проблемы, введя следующую команду в командной строке 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.

Это также может быть решено путем создания символической ссылки, как описано в этом ответе.

Это никогда не должно происходить в Windows, если вы не создали R из исходного кода без поддержки tcl/tk.

На Arch Linux, tk это отдельный пакет от tcl и оба должны быть установлены:

sudo pacman -S tcl tk

Это с учетом того, что выход из capabilities("tcltk") с R есть TRUE (что означает, что ваш R скомпилирован с tcltk поддержка, как отмечалось ранее в ответах здесь, это должно быть в том случае, если вы установили его из архивных репозиториев).

Официальные инструкции по установке R говорят:

Примечание: использование X11 (включая tcltk) требует установки XQuartz, поскольку он больше не является частью OS X. Всегда переустанавливайте XQuartz при обновлении OS X до новой основной версии.

Итак: просто (пере) установите XQuartz, если вы хотите использовать tcltk пакет в R.

  1. удалить файл X11 в папке: /opt
  2. удалить X11 на приложение унитилтий
  3. переустановите X11 снова

Задача решена...

Для пользователей Mac-OS:

Недавно я боролся с этой проблемой и обнаружил, что в R-3.1.2 есть ошибка, которая предполагает, что otool установлен, когда его нет.

R-3.0.0 (и выше) поставляется с Tck/Tk 8.6.0, поэтому вам не нужно его устанавливать.

Простое обновление до более новой версии R (3.4.2) устранило проблему для меня.

У меня была та же проблема, и я спустился в кроличью нору, прежде чем нашел простое решение. Если вы устанавливаете R из bianry, он будет включать tcltk по умолчанию. Просто запустите установщик с установкой по умолчанию. Вы можете получить.dmg здесь: https://cran.r-project.org/bin/macosx/

Самый простой ответ для пользователей Mac:

1- Установите tcl-tk с помощью brew:

      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

Задача решена!

Другие вопросы по тегам