R离线安装本地源码包提示no packages specified及文件不存在错误
问题原因
两个报错是连锁关系,核心问题是R根本没有在你拼接的路径下找到目标安装包,和你对目标文件夹的写入权限没有关系:
file.exists(my_file_path)返回FALSE是根因:你传入的文件路径和本地实际存放安装包的路径不匹配,R找不到对应文件。- "no packages specified"是连带报错:
install.packages接收到的路径指向不存在的文件,识别不到可安装的R包,就会抛出这个错误。
常见的路径不匹配原因有三个:
- 路径用了示例占位符没替换:代码里
file.path("path", "to", "my", "dir")是教程里常用的路径写法示例,不是你本地真实的存储路径,R会默认从当前工作目录下寻找名为path/to/my/dir的子文件夹,自然找不到。 - 安装包文件名写错:R的源码安装包标准后缀是
.tar.gz,你代码里写的文件名是jsonlite_1.8.0.tar,缺失了.gz后缀,和本地实际下载的压缩包文件名不一致。 - 路径层级和实际不符:比如安装包直接存在当前工作目录,但拼接路径时多写了几层不存在的子文件夹;Windows环境下没写对应盘符,Mac/Linux环境下没写全根路径下的文件夹层级。
解决步骤
- 先拿到安装包的真实完整路径
Windows环境:找到存放jsonlite安装包的文件夹,按住Shift右键点击对应的.tar.gz压缩包,选择「复制为路径」就能拿到完整正确的文件路径;Mac/Linux环境:打开终端进入存放安装包的文件夹,执行pwd拿到文件夹绝对路径,再执行ls确认压缩包的准确文件名。 - 修正代码后先验证路径再安装
参考代码如下,注意替换成你自己的真实路径和文件名:
# 替换为本地存放安装包的真实文件夹路径,不要用占位符 my_dir <- file.path("D:", "local_r_packages") # 文件名要和本地压缩包完全一致,注意后缀是.tar.gz my_file <- "jsonlite_1.8.0.tar.gz" my_file_path <- file.path(my_dir, my_file) # 先验证路径有效性,返回TRUE再执行安装 file.exists(my_file_path) install.packages(my_file_path, repos = NULL, type = "source")
- 如果觉得手动拼路径容易出错,可以直接执行
my_file_path <- file.choose(),在弹出的文件选择窗口里选中要安装的压缩包,函数会自动返回正确的文件路径,直接传给install.packages即可。
内容的提问来源于stack exchange,提问作者Mefitico
相关产品推荐
相关产品推荐

