Hi there, this is my first question to the community.
I am trying to understand how the package management facility and Project.toml? First, does this file, Project.toml, play the same functionality of virtualenv in Python, to have a different and isolated package environment per each workspace/project?
Second, suppose I have a structure such as the follows:
/Project1/Project.toml
/Project1/path/to/something.jl
/Project1/…
and I wish to create a separate script, in a different code path that uses the functionalities of /Project1, e.g.
/Project2/script.jl
How can I load/include from script.jl the file /Project1/path/to/something.jl and all its dependencies? Moreover, how can I add further dependencies in /Project2 without touching /Project1/Project.toml?
Yes, that’s roughly correct. You can activate an environment by typing ]activate path/to/env.
If you want to load its dependencies, you can ]activate /Project2 followed by ]add /Project1. Pkg will add the path as a dependency to Project2, which will get its own Project.toml and Manifest.toml.
Note that usually Project1 has a module called Project1 at /Project1/src/Project1.jl, which you can use by doing using Project1 after ]add /Project1. It’s not quite idiomatic to just have environments with files that are included manually - nested directories and namespaces are not related in julia, unlike in python where the namespace structure follows the directory structure.