From murdoch.duncan at gmail.com  Mon Oct 24 20:54:16 2016
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Mon, 24 Oct 2016 14:54:16 -0400
Subject: [Rd] improve 'package not installed' load errors?
In-Reply-To: <CAJXgQP1AAs2oXZX1wbsCcPCsUYOjG-VXTPZ_zeyq9co2C5B0rQ@mail.gmail.com>
References: <CAJXgQP1AAs2oXZX1wbsCcPCsUYOjG-VXTPZ_zeyq9co2C5B0rQ@mail.gmail.com>
Message-ID: <923577ec-5b0e-d71c-6244-b39952fb00e7@gmail.com>

On 24/10/2016 1:51 PM, Kevin Ushey wrote:
> Hi R-devel,
>
> One of the more common issues that new R users see, and become stumped
> by, is error messages during package load of the form:
>
> > library(ggplot2)
> Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()),
> versionCheck = vI[[j]]) :
>    there is no package called 'Rcpp'
> Error: package or namespace load failed for 'ggplot2'
>
> Typically, error messages of this form are caused simply by one or
> more dependent packages (in this case, 'Rcpp') not being installed or
> available on the current library paths. (A side question, which I do
> not know the answer to, is how users get themselves into this state.)

I think one way to get here is to be running with several libraries.  
You install ggplot2 while Rcpp is available, but in a different part of 
the .libPaths list, then in a later session try to use it with a 
different .libPaths setting.
>
> I believe it would be helpful for new users if the error message
> reported here was a bit more direct, e.g.
>
> > library(ggplot2)
> Error: 'ggplot2' depends on package 'Rcpp', but 'Rcpp' is not installed
> consider installing 'Rcpp' with install.packages("Rcpp")

The risk with this message is that Rcpp may really be installed, but 
it's just not currently on .libPaths.  Detecting that situation and 
reporting on it looks like it would be relatively hard:  it would mean 
the ggplot2 installation needs to record where it found all 
dependencies, and if at some later time it doesn't find one, see if that 
location still exists and would still work (in which case the message 
should suggest modifying .libPaths).  I think that's too much work.

Even a simple change like

Error: 'ggplot2' depends on package 'Rcpp', but 'Rcpp' was not found


might not be easy (which function knows both names?)  However, if you 
want to suggest a patch to implement this, I would take a look.

Duncan Murdoch

>
> In other words, it might be helpful to avoid printing the
> 'loadNamespace()' call on error (since it's mostly just scary /
> uninformative), and check up-front that the package is installed
> before attempting to call 'loadNamespace()'. I'm sure a number of
> novice users will still just throw their hands up in the air and say
> "I don't know what to do", but I think this would help steer a number
> of users in the right direction.
>
> (The prescription to suggest installing a package from CRAN if
> available might be a step too far, but I think making it more clear
> that the error is due to a missing dependent package would help.)
>
> Any thoughts?
> Kevin
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] improve 'package not installed' load errors?
Duncan Murdoch