Не удается выполнить предварительную компиляцию пакета RCall после установки

#julia

#julia

Вопрос:

 julia> using RCall
[ Info: Precompiling RCall [6f49c342-dc21-5d91-9882-a32aef131414]
ERROR: LoadError: RCall not properly installed. Please run Pkg.build("RCall")
Stacktrace:
 [1] error(::String) at .error.jl:33
 [2] top-level scope at C:Usersnicho.juliapackagesRCalleRsxlsrcRCall.jl:36
 [3] include(::Function, ::Module, ::String) at .Base.jl:380
 [4] include(::Module, ::String) at .Base.jl:368
 [5] top-level scope at none:2
 [6] eval at .boot.jl:331 [inlined]
 [7] eval(::Expr) at .client.jl:467
 [8] top-level scope at .none:3
in expression starting at C:Usersnicho.juliapackagesRCalleRsxlsrcRCall.jl:33
ERROR: Failed to precompile RCall [6f49c342-dc21-5d91-9882-a32aef131414] to C:Usersnicho.juliacompiledv1.5RCall8GFyb_RACSn.ji.
Stacktrace:
 [1] error(::String) at .error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at .loading.jl:1305
 [3] _require(::Base.PkgId) at .loading.jl:1030
 [4] require(::Base.PkgId) at .loading.jl:928
 [5] require(::Module, ::Symbol) at .loading.jl:923
 

Установите переменную среды «R_HOME», и пакет установлен, но предварительная компиляция не сработала корректно.

Ответ №1:

Вам нужно выполнить сборку RCall после установки R_HOME , а не просто перекомпилировать ее. Пожалуйста, также обратите внимание, что это R_HOME должно указывать на место установки R, а не на исполняемый файл.

Следовательно, правильные команды могут выглядеть следующим образом:

 ENV["R_HOME"]="/your/R/installation/directory/path"
using Pkg
Pkg.build("RCall")
using RCall
 

Комментарии:

1. В частности, R RHOME будет использоваться R в вашем path, чтобы показать его RHOME каталог, который, как отмечено здесь, является верхним уровнем его установки, а не путем к интерфейсному скрипту или двоичному файлу или … Это работает одинаково во всех операционных системах, но Windows, как мы знаем, немного особенная из-за отсутствия общего $PATH .

2. Спасибо за ваш подробный ответ! У меня есть следующий вопрос. Почему мне нужно создавать RCall перед его использованием, в то время как для других пакетов я никогда не выполнял шаг «сборки»?

3. Вы всегда выполняете этап сборки — это делается при установке пакета. См. Раздел «Создание пакетов» на julialang.github.io/Pkg.jl/v1.5/managing-packages Для некоторых пакетов при изменении конфигурации вам необходимо собрать их снова — другим примером может быть PyCall