Since julia 1.0 I am completely lost with how the packaging system works in terms of dealing with my own code. I’ve read https://docs.julialang.org/en/v1/stdlib/Pkg/index.html over and over again, and I just don’t get it.
Suppose I have some local package in
~/julia/Mod1.jl/, that I am actively developing/debugging, and I basically want to use it in some application in
~/julia/Mod2.jl/. How do I use the
pkg> julia-shell commands
instantiate and perhaps a couple of other commands while working in
~/julia/Mod1.jl/ so that I have access to the current actual code on disk in
~/julia/Mod1.jl/ while working on the application in
~/julia/Mod2.jl/? And what do I need to do in in the REPL in
~/julia/Mod2.jl/ in order to reload the code in
I believe the following should work iiuc:
- Move your
~/julia/Mod2.jl files to
~/julia/Mod2/src folders respectively.
- Turn your
Mod1 folder into a package with Project.toml and Manifest.toml files using the instructions in Convert REQUIRE to Project.toml and Manifest.toml
- Follow similar steps for
Mod2 but before step 10, you can do
]add ~/julia/Mod1 which will add
Mod1 as a local dependency of
- After you restart Julia in the default environment, make both packages visible in this environment by running
]dev ~/julia/Mod1 and
]dev ~/julia/Mod2, or you can choose to make the latter only visible if you want.
Hopefully, some expert can correct me if I said anything wrong.
Mod1 as a dependence of
Mod2, you probably want to
dev ~/julia/Mod1 instead of
add ..., because
add will only track the changes you commit to
Mod1. Also it is probably cleaner to use relative path,