我已经构建了一个新的包,它在github.com/kevinwolz/hisafer上的GitHub上托管 .
我试图通过devtools :: install_github()安装包,但我得到了一个非常错误 . 救命?
>install_github("kevinwolz/hisafer")
Downloading GitHub repo kevinwolz/hisafer@master
from URL https://api.github.com/repos/kevinwolz/hisafer/zipball/master
Installing hisafer
[这里,5个包依赖项(dplyr,tidyr,purrr,ggplot2,lubridate)会自动成功安装,但我已经将文本输出了]
"C:/Users/wolzkevi/DOCUME~1/R/R-34~1.3/bin/x64/R" --no-site-file --no-environ --no-save \
--no-restore --quiet CMD INSTALL \
"C:/Users/wolzkevi/AppData/Local/Temp/Rtmpg5OyD6/devtools28843ed4c0a/kevinwolz-hisafer-bf69883" \
--library="C:/Users/wolzkevi/Documents/R/R-3.4.3/library" --install-tests
* installing *source* package 'hisafer' ...
** R
** inst
** preparing package for lazy loading
Error : '' does not exist in current working directory ('C:/Users/wolzkevi/AppData/Local/Temp/Rtmpg5OyD6/devtools28843ed4c0a/kevinwolz-hisafer-bf69883').
Error : unable to load R code in package 'hisafer'
ERROR: lazy loading failed for package 'hisafer'
* removing 'C:/Users/wolzkevi/Documents/R/R-3.4.3/library/hisafer'
In R CMD INSTALL
Installation failed: Command failed (1)
这里的关键错误似乎是“错误:''在当前工作目录中不存在” . 有谁知道为什么会这样?我的软件包构建/设置方式是否会导致问题?我不能从GitHub下载时从源代码安装包,这让我相信在GitHub进程中发生了一些奇怪的事情 .
会话信息:
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252
[3] LC_MONETARY=French_France.1252 LC_NUMERIC=C
[5] LC_TIME=French_France.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] devtools_1.13.4
loaded via a namespace (and not attached):
[1] httr_1.3.1 compiler_3.4.3 R6_2.2.2 tools_3.4.3 withr_2.1.1 curl_3.1
[7] memoise_1.1.0 knitr_1.19 git2r_0.21.0 digest_0.6.15
1 回答
问题是在
R/utils.R
中,您尝试从inst/extdata
读取不存在的文件(这是第36和37行):检查
inst/extdata
将显示input_defs.txt
和output_defs.txt
都没有 .我是怎么想出来的?
我跑了
这也给出了错误
但允许您显示信息性追溯:
请注意回溯中的第9个,它不仅显示有问题的代码,还有助于显示它来自哪个文件以及它所在的行 .
问题的根源:你的.gitignore
在你的
.gitignore
中,你有线条这意味着
inst/extdata/
中的所有文件和子文件夹都没有被跟踪,所以当用户尝试从GitHub安装时,他们没有得到你的包正常工作所需的extdata/
文件 .作为旁注,即使用户下载您的仓库并手动添加
input_defs.txt
和output_defs.txt
,他们也不会有其他模板目录,您希望他们出于同样的原因,因此构建小插图会导致安装错误 .