I’d like to start making better use of stacked environments and have a few questions.
If I’m not mistaken the only sanctioned way to add another stacked environment is by modifying LOAD_PATH, e.g. push!(LOAD_PATH, "@myenv") (generally one would want this at the . Or alternatively by setting the JULIA_LOAD_PATH environment variable. The disadvantage of the latter is that it doesn’t just add to the default LOAD_PATH, it replaces it, so if you want to just add then the options are either to explicitly include the defaults (JULIA_LOAD_PATH=@:@v#.#:@stdlib:@myenv) or by doing the push! in startup.jl. Am I correct that this is basically what’s available for starting a REPL session with an additional stacked environment? How would it be accomplished for IJulia and Pluto?
Next I’m wondering, other than having to ] activate @myenv, ] status, and ] activate <previous env> to get back to where I was, is there some way to determine what modules are available for import / using beyond those in my primary environment? I guess this question isn’t just about additional stacked environments but applies to the default ones too. I can of course do a tab-complete on using but that doesn’t tell me what environment is providing a given module.
Finally I’m wondering about how people version control their shared/stacked environments. Do you simply make ~/.julia/environments/myenv a git repo? There’s nothing in Pkg.jl that can help with managing these, right? I’m thinking about how one would maintain some standard shared environment for use by a team.
Also if anyone has general workflow tips on using stacked/shared environments I’d be interested to hear. The docs basically describe how they work but don’t really offer much in the way of how to make use of these tools.