Thank you, Duncan and Uwe for the suggestions. I followed your instructions and created a function to check for EBImage that is only called in an interactive section and, if necessary, ask the user to install the package with install.packages("EBImage", repos=" https://bioconductor.org/packages/3.13/bioc")
Best, Tiago Em qua., 1 de set. de 2021 às 03:53, Uwe Ligges < lig...@statistik.tu-dortmund.de> escreveu: > Two more comments. > > 1. Note that your code only works in interactice mode, not when checking > your package as it waits infinitely for the user's choice. > > 2. I do not see an advantage of installing BiocManager if EBImage is > needed, the essential part is simply to select BioC as a repository to > install packages from. > > Best, > Uwe Ligges > > > On 31.08.2021 23:33, Duncan Murdoch wrote: > > People shouldn't be able to install your package unless the "hard" > > dependencies are available. > > > > If EBImage isn't essential to your package, you should make it a "soft" > > dependency by listing it in Suggests and checking for it every time you > > use it. > > > > Duncan Murdoch > > > > On 31/08/2021 3:20 p.m., Tiago Olivoto wrote: > >> Dear all, > >> I have a package called pliman > >> <https://CRAN.R-project.org/package=pliman> > >> which depends on the Bioconductor package EBImage. > >> > >> When running install.packages("pliman") I get the following warning > >> > >> Warning in install.packages : dependency ‘EBImage’ is not available > >> > >> and thus when loading the package with library(pliman), the following > >> error > >> occurs > >> > >> Erro: package or namespace load failed for ‘pliman’ in loadNamespace(i, > >> c(lib.loc, .libPaths()), versionCheck = vI[[i]]): > >> there is no package called ‘EBImage’ > >> > >> I created a check function to check if EBImage is available and if > >> not, ask > >> users if they want to install it > >> > >> --- > >> check_ebi <- function(){ > >> if(!requireNamespace("EBImage", quietly = TRUE)) { > >> inst <- > >> switch(menu(c("Yes", "No"), title = "Package {EBImage} required > >> but not > >> available.\nDo you want to install it now?"), > >> "yes", "no") > >> if(inst == "yes"){ > >> if (!requireNamespace("BiocManager", quietly = TRUE)){ > >> install.packages("BiocManager") > >> } > >> BiocManager::install("EBImage", ask = FALSE, update = FALSE) > >> } else{ > >> message("To use {pliman}, first install {EBImage} with > >> 'BiocManager::install(\"EBImage\")'.") > >> } > >> } > >> } > >> --- > >> > >> Is there any way to run this function prior to namespace loading? I > tried > >> putting check_ebi() into .onLoad() but the same error occurs. > >> > >> Thanks in advance for any suggestions. > >> Tiago > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> R-package-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-package-devel > >> > > > > ______________________________________________ > > R-package-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-package-devel > [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel