2
$\begingroup$

In developing and debugging a package today, I ran into a problem where installing the package through the menu seemed to stop working; changes I made simply weren’t being updated. As a matter of course, I have been selecting the option to install the package for all users on the computer. I was able, finally, to get the updates to take by selecting to install the package for just the current user. Here is my hypothesis, and I am hoping that someone can confirm or deny it (and maybe provide a fix):

1) Maybe one time I accidentally forgot to change the option from the default (install for just the current user) to my preference (install for all users).

2) Maybe if a package named the same thing is installed both ways, the version installed for the current user takes precedence.

Any thoughts? And is there a way to remove the conflict?

$\endgroup$
6
$\begingroup$

As a package developer, do not use File -> Install. This menu item is for the convenience of people who do not (yet) know what installing a package entails exactly. As a developer, you must be in full control and know exactly what goes where. I suggest copying the package files manually.

I believe File -> Install will install the package into either $UserBaseDirectory/Applications or $BaseDirectory/Application (for the current user or all users, respectively). Check these directories.

To check what exactly gets loaded with Get["MyPackage`"], use FindFile["MyPackage`"].

$\endgroup$
  • $\begingroup$ Might be worth mentioning that thinking about how to turn one's package into a paclet would be good, too, as it provides versioning and other nice things. I think Kuba also has a way to do a global paclet install, too, as opposed to just on a user-by-user basis. $\endgroup$ – b3m2a1 Jul 3 at 7:16
  • $\begingroup$ @b3m2a1 right, didn't think about that. So assuming that FileNameJoin[{$BaseDirectory, "Paclets", "Repository"}] exists you can run e.g. MPMInstall["kubapod", "mpm", "Destination" -> FileNameJoin[{$BaseDirectory, "Paclets", "Repository"}], "IgnoreVersion" -> True] it should work with .paclet path spec instead of first two arguments too. $\endgroup$ – Kuba Jul 3 at 10:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.