Why start domain-specific scientific projects as Packages?

I put dev tools in @v1.x, that is the current shared environment, and whatever the current package/project needs in its environment. Then I have a .envrc file in each project with export JULIA_PROJECT=@. and I use direnv. That way I always have my dev tools in the REPL and I can load whatever the dependencies is the project whose directory I’m currently am in.

If you’re trusting, you could just put that export in your global bashrc file (or whatever shell you use), but it’s a bit dangerous since it means that cloning some project and starting Julia in that directory can change what packages mean (although you still have to install them).

8 Likes