: 公司业务需要在离线机器(windows os)上部署R以及相关开发包. 在总结网络上(主要源自StackOverflow, CRAN)和自己踩的雷. 希望对大家有帮助. 有关python离线安装, 参见这里
测试环境: 从网络上获取相关的包和所依赖的包.
在 测试环境执行
方法一, 该方法可能会遗漏一些包. 如: caret依赖的 e1071
#设置包下载的网络路径(CRAN)
options(repos=structure(c(CRAN="http://cran.ma.imperial.ac.uk/")))
# 函数用来搜寻依赖的包. 得到所有的包名
getPackages <- function(packs){
packages <- unlist(
tools::package_dependencies(
packs
, available.packages()
, which=c("Depends", "Imports")
, recursive=TRUE
)
)
packages <- union(packs, packages)
packages
}
# 指定要下载的包, 字符串数组
# !!! xlsx包需要 Java 支持,
Packages <- getPackages(
c('ggplot2','xlsx','caret','dplyr','randomForest','neuralnet','gridExtra')
)
# 指定下载目录
dest_dir = 'E:\\python_project\\BA_TubeBurstedAnalysis\\software_required' # '\' 在R中为转义字符, 使用'/'或者'\'
# 下载包, 注意: 若是在window 下安装 需设定 type = 'win.binary'
download.packages(
pkgs=Packages
, destdir= dest_dir
, type='win.binary')
方法二, 简单粗暴 但是下载量比较大
得到测试环境所有安装的包
Packages <- installed.packages()[,1]
# 指定下载目录
dest_dir = 'E:\\python_project\\BA_TubeBurstedAnalysis\\software_required' # '\' 在R中为转义字符, 使用'/'或者'\'
# 生成包名到pkgnames.csv
pkgs = paste0("c(\"",paste(packages, collapse= '\",\"'), "\")")
write.table(pkgs,file=file.path(dest_dir,'pkgnames.csv'), row.names = FALSE, col.names = FALSE, quote=FALSE)
# 下载包, 注意: 若是在window 下安装 需设定 type = 'win.binary'
download.packages(
pkgs=Packages
, destdir= dest_dir
, type='win.binary')
(1)将R以及第一步下载的包拷贝到目标主机
(2) 安装R
(3) 安装所需要的包
# 在目标主机上执行.
library(tools)
source_folder = 'C:\\Users\\Administrator\\Desktop\\software_required' # 拷贝的路径
write_PACKAGES(source_folder, type='win.binary')
# 若是用方法二, 把pkgnames.csv里面的拷贝粘贴里面
install.packages(c('ggplot2','xlsx','caret','dplyr','randomForest','neuralnet','gridExtra','e1071'), contriburl= 'file:///C:\\Users\\Administrator\\Desktop\\software_required')