无法安装 brms 或 rstan 进行编译

Bet*_*eth 4 compiler-errors r stan rstan brms

我一直试图让 brms/rstan 在我的系统上工作,但运气有限。我有 R 4.2 并且正在使用 R studio。我最初开始在 R 中这样做,因为我无法让任何贝叶斯包在 Python 中工作,而且我(这似乎是错误的)认为在 R 中设置会更容易。

我正在观看有关如何使用 brms 进行回归的视频(https://www.youtube.com/watch?v=-1Hob2qpyeY),因此安装了 brms 和 bayesplot。RStudio 告诉我安装 Rtools,所以我就这么做了。我能够运行 lm,但使用 brm 后我无法运行模型。我卸载了所有软件包并尝试排除故障,并遵循了几篇帮助文章,但没有成功。

我认为可能存在问题,因为 R 安装到 C:\Program Files 并且我没有写访问权限(不是管理员),所以我尝试使用https://www.accelebrate.com/更改默认库库/操作方法文章/r-rstudio-library

我尝试按照https://learnb4ss.github.io/learnB4SS/articles/install-brms.html 但“配置 C++”部分没有给出预期结果(https://github.com/stan-dev/rstan/ wiki/Configuring-C---Toolchain-for-Windows无法安装 json)

我重新安装了 RTools。我尝试查看这篇文章,但无法弄清楚我需要的第二个目录是什么https://github.com/metrumresearchgroup/mrgsolve/issues/160 “请注意,路径前面有两个目录。” sys.getenv 的输出是巨大的。我的 Rtools 是 C:\rtools40

Sys.getenv("PATH")
Run Code Online (Sandbox Code Playgroud)

1 “c:\rtools42\x86_64-w64-mingw32.static.posix\bin;c:\rtools42\usr\bin;C:\rtools42\usr\bin;C:\Program Files\R\R-4.2.0 \bin\x64;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C: \Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\dotnet;C:\Program Files (x86)\dotnet;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\ XXXXXXXX\AppData\Local\Programs\Python\Python310\Scripts;C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python310;C:\Users\XXXXXXXX\AppData\Local\Microsoft\WindowsApps;C:\Users \XXXXXXXX\AppData\Local\Programs\Microsoft VS Code\bin;C:\msys64\mingw64\bin;C:\Program Files\R\R-4.2.0"

环境变量的 图像 路径变量的图像

此时我尝试再次运行示例模型

example(stan_model, package = "rstan", run.dontrun = TRUE)
Run Code Online (Sandbox Code Playgroud)

他下面乱七八糟的就是我得到的。我不知道需要做什么才能让任何类型的贝叶斯模型发挥作用(在 Python 和 R 之间,我已经观看视频并阅读 stackoverflow 和 github 好几天了,但我无法运行任何安装),请帮忙!

最终错误代码:

Compilation ERROR, function(s)/method(s) not created!
Run Code Online (Sandbox Code Playgroud)

compileCode(f, code, language = language, verbose = verbose) 中的错误: sh: 第 1 行: C:/rtools42/usr/mingw_64/bin/g++: 没有这样的文件或目录make: *** [C:/PROGRA~ 1/R/R-42~1.0/etc/x64/Makeconf:259:fileeaa4c76716d.o]错误127

吐出的不是“程序源”的所有东西的巨大混乱

Blockquote example(stan_model, package = "rstan", run.dontrun = TRUE) 加载所需的包:StanHeaders 加载所需的包:ggplot2 rstan(版本 2.21.5,GitRev:2e1f913d3ca3) 为了在具有多余 RAM 的本地多核 CPU 上执行,我们建议调用 options(mc.cores = parallel::detectCores())。为了避免重新编译未更改的 Stan 程序,我们建议调用 rstan_options(auto_write = TRUE) 不要在 'LOCAL_CPPFLAGS' 或 Makevars 文件中指定 '-march=native' stn_md> stancode <- 'data {real y_mean;}parameters {real y ;} model {y ~ normal(y_mean,1);}' stn_md> mod <- stan_model(model_code = stancode, verbose = TRUE) 现在将模型“73fc79f8b1915e8208c736914c86d1a1”从 Stan 代码转换为 C++ 代码。成功解析 Stan 模型“73fc79f8b1915e8208c736914c86d1a1”。现在编译模型“73fc79f8b1915e8208c736914c86d1a1”的 C++ 代码。操作系统:x86_64、mingw32;斯坦:2.21.5;Rcpp:1.0.8.3;内联:0.3.19

设置环境变量: LOCAL_LIBS = "C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/rstan/lib/x64/libStanServices.a" -L"C:/Users/XXXXXX/AppData/Local/ R/win-library/4.2/StanHeaders/libs/x64" -lStanHeaders -L"C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppParallel/lib/x64" -ltbb PKG_CPPFLAGS = -I “C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/Rcpp/include/”-I“C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppEigen/include /“ -I”C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppEigen/include/unsupported“-I”C:/Users/XXXXXX/AppData/Local/R/win-library/ 4.2/BH/include"-I"C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/StanHeaders/include/src/"-I"C:/Users/XXXXXX/AppData/Local/R /win-library/4.2/StanHeaders/include/" -I"C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppParallel/include/" -I"C:/Users/XXXXXX/AppData /Local/R/win-library/4.2/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DBOOST_NO_AUTO_PTR -include "C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/StanHeaders/include /stan/math/prim/mat/fun/Eigen.hpp" -std=c++1y 。。。Blockquote make cmd 是 make -f "C:/PROGRA~1/R/R-42~1.0/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-42~1.0/share/make /winshlib.mk" CXX='$(CXX14) $(CXX14STD)' CXXFLAGS='$(CXX14FLAGS)' CXXPICFLAGS='$(CXX14PICFLAGS)' SHLIB_LDFLAGS='$(SHLIB_CXX14LDFLAGS)' SHLIB_LD='$(SHLIB_CXX14LD)' SHLIB ="fileeaa4c76716d.dll" WIN=64 TCLBIN= OBJECTS="fileeaa4c76716d.o"

make 将使用 C:/rtools42/usr/mingw_64/bin/g++ -std=gnu++14 -I"C:/PROGRA~1/R/R-42~1.0/include" -DNDEBUG -I"C:/用户/XXXXXX/AppData/Local/R/win-library/4.2/Rcpp/include/" -I"C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppEigen/include/" -I “C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppEigen/include/unsupported”-I“C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/BH/包括“-I”C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/StanHeaders/include/src/“-I”C:/Users/XXXXXX/AppData/Local/R/win-library /4.2/StanHeaders/include/" -I"C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/RcppParallel/include/" -I"C:/Users/XXXXXX/AppData/Local/R /win-library/4.2/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DBOOST_NO_AUTO_PTR -include "C:/Users/XXXXXX/AppData/Local/R/win-library/4.2/StanHeaders/include/stan/math /prim/mat/fun/Eigen.hpp" -std=c++1y -I"c:/rtools42/x86_64-w64-mingw32.static.posix/include" -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c fileeaa4c76716d.cpp -o fileeaa4c76716d.o if test "zfileeaa4c76716d.o" != "z"; 然后
如果测试-e“fileeaa4c76716d-win.def”;然后
echo C:/rtools42/usr/mingw_64/bin/g++ -shared -s -static-libgcc -o fileeaa4c76716d.dll fileeaa4c76716d-win.def fileeaa4c76716d.o -L"c:/rtools42/x86_64-w64-mingw32.static .posix/lib/x64" -L"c:/rtools42/x86_64-w64-mingw32.static.posix/lib" -L"C:/PROGRA~1/R/R-42~1.0/bin/x64" - LR ;
C:/rtools42/usr/mingw_64/bin/g++ -shared -s -static-libgcc -o fileeaa4c76716d.dll fileeaa4c76716d-win.def fileeaa4c76716d.o -L"c:/rtools42/x86_64-w64-mingw32.static.posix /lib/x64" -L"c:/rtools42/x86_64-w64-mingw32.static.posix/lib" -L"C:/PROGRA~1/R/R-42~1.0/bin/x64" -lR ;
否则
回声出口> tmp.def;
C:/rtools42/usr/mingw_64/bin/nm 文件eaa4c76716d.o | sed -n 's/^.* [BCDRT] / /p' | sed -n 's/^.* [BCDRT] / /p' | sed -e '/[.]refptr[.]/d' -e '/[.]weak[.]/d' | sed 's/[^][^]*/"&"/g' >> tmp.def;
echo C:/rtools42/usr/mingw_64/bin/g++ -shared -s -static-libgcc -o fileeaa4c76716d.dll tmp.def fileeaa4c76716d.o -L"c:/rtools42/x86_64-w64-mingw32.static.posix/ lib/x64" -L"c:/rtools42/x86_64-w64-mingw32.static.posix/lib" -L"C:/PROGRA~1/R/R-42~1.0/bin/x64" -lR ;
C:/rtools42/usr/mingw_64/bin/g++ -shared -s -static-libgcc -o fileeaa4c76716d.dll tmp.def fileeaa4c76716d.o -L"c:/rtools42/x86_64-w64-mingw32.static.posix/lib /x64" -L"c:/rtools42/x86_64-w64-mingw32.static.posix/lib" -L"C:/PROGRA~1/R/R-42~1.0/bin/x64" -lR ;
rm -f tmp.def;
fi
fi 编译期间出现错误:源代码错误或编译器配置错误!编译错误,未创建函数/方法!compileCode(f, code, language = language, verbose = verbose) 中的错误: sh: 第 1 行: C:/rtools42/usr/mingw_64/bin/g++: 没有这样的文件或目录make: *** [C:/PROGRA~ 1/R/R-42~1.0/etc/x64/Makeconf:259:fileeaa4c76716d.o]错误127

小智 5

从 R 版本 4.2 开始,这种情况就会发生。您可以尝试恢复到较旧的 R 版本或尝试:

remove.packages(c("StanHeaders", "rstan"))

install.packages(
  "StanHeaders",
  repos = c(
    "https://mc-stan.org/r-packages/",
    getOption("repos")
  )
)

install.packages(
  "rstan",
  repos = c(
    "https://mc-stan.org/r-packages/",
    getOption("repos")
  )
)
Run Code Online (Sandbox Code Playgroud)

来源:https ://discourse.mc-stan.org/t/rstan-fails-to-build-example-model/27248