'R packge install from GitHub - "'' does not exist in current working directory
I have built a new package, and it is hosted on GitHub at github.com/kevinwolz/hisafer.
I am trying to install the package via devtools::install_github(), but I am getting aweird error. Help?
>install_github("kevinwolz/hisafer")
Downloading GitHub repo kevinwolz/hisafer@master
from URL https://api.github.com/repos/kevinwolz/hisafer/zipball/master
Installing hisafer
[Here, the 5 package dependencies (dplyr, tidyr, purrr, ggplot2, lubridate) are automatically installed successfully, but I have left text out]
"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)
It seems that the critical error here is "Error : '' does not exist in current working directory". Does anyone know why this might be happening? Is there something about the way my package is built/setup that is causing issues? I can install the package from source just fine when not downloading from GitHub, so that leads me to believe that something weird is happening in the GitHub process.
SESSION INFO:
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
Solution 1:[1]
The problem is that in R/utils.R
, you try to read files from inst/extdata
that do not exist (this is from lines 36 and 37):
INPUT.DEFS <- readr::read_delim(system.file("extdata", "input_defs.txt", package = "hisafer"), "\t", col_types = readr::cols())
OUTPUT.DEFS <- dplyr::arrange(readr::read_delim(system.file("extdata", "output_defs.txt", package = "hisafer"), "\t", col_types = readr::cols()), profile, name)
Inspection of inst/extdata
will show you neither input_defs.txt
nor output_defs.txt
are there.
How did I figure that out?
I ran
devtools::load_all("hisafer/")
which also gives the error
Error: '' does not exist in current working directory
but allows you to show an informative traceback:
13.stop("'", path, "' does not exist", if (!is_absolute_path(path)) paste0(" in current working directory ('",
getwd(), "')"), ".", call. = FALSE)
12.check_path(path)
11.standardise_path(file)
10.read_delimited(file, tokenizer, col_names = col_names, col_types = col_types,
locale = locale, skip = skip, comment = comment, n_max = n_max,
guess_max = guess_max, progress = progress)
9.readr::read_delim(system.file("extdata", "input_defs.txt", package = "hisafer"),
"\t", col_types = readr::cols()) at utils.R#36
8.eval(exprs[i], envir)
7.eval(exprs[i], envir)
6.source_one(file, envir = envir)
5.source_many(paths, env)
4.force(code)
3.withr_with_dir(file.path(pkg$path), source_many(paths, env))
2.load_code(pkg)
1.devtools::load_all("hisafer/")
Notice number 9 in the traceback, which not only displayed the problematic code, but also helpfully showed which file it came from and which line it was on.
The source of the problem: Your .gitignore
In your .gitignore
, you have the lines
inst/extdata/
inst/extdata/*
which means all the files and subfolders in inst/extdata/
are not tracked, so when users try to install from GitHub, they're not getting the extdata/
files they need for your package to work properly.
As a side note, even if a user downloads your repo and manually adds in input_defs.txt
and output_defs.txt
, they won't have some other template directories you want them to have for the same reason, so building the vignettes then causes an error in the install.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |