How To Create Julia Packages
I wanted to put all the code for the different algorithms for QR decompositions into a Julia package, so that I could reuse the functions by simply entering
using QRGramSchmidt in julia. This requires that your code is grouped into a package. In Matlab, you would more or less create some
.m files and put them into a folder from your Matlab path. The process is simple and straightforward but tracking dependencies can be difficult, especially when you want to distribute the package to your colleagues. My personal experience with Python is probably best described by this xkcd comic.
Creating a simple package is straightforward. In your Julia command line press
] to enter the pkg mode. Your shell prompt should now start with
pkg>. Let’s assume we want to create a package named FOO. In that case we enter
and you should get an output similar to
Generating project FOO: FOO/project.toml FOO/src/FOO.jl
There should be a folder named FOO in your current working directory now that contains the listed files. The file project.toml contains some meta information like name and version. The FOO.jl file contains a dummy module with a simple function. Your code should go into this file.
I have used this method to create the packages for my orthogonalisation algorithms.
Let’s say you want to add the LinearAlgebra package as a dependency to your package FOO. First you move your working directory to FOO and enter the pkg mode again. Then enter
activate . to activate your current project. Your prompt should change to
(FOO) pkg>. Now enter
add LinearAlgebra. This will update the Project.toml file with the new dependency and generate a Manifest.toml file with the dependency structure of your dependencies. The package LinearAlgebra for example depends on Libdl, which you can see in the Manifest.toml file.
Creating a package FOO is straightforward. Just enter
using PkgTemplates t=Template(interactive=true)
There will be an interactive prompt where you can enter the necessary data for your package. Once you are done, you just have to generate a package from the template that you just created. Therefore, enter
t("FOO") on your command line to generate the folder structure with all necessary files.
Note that PkgTemplate.jl is a lot fancier than Pkg.jl and provides functionality to set up unit testing for example.