As with many software packages, additional functionality is available in other libraries or packages. If you take a look at [https://juliaobserver.com](Julia’s Package Listing) there are about 2000 packages (as of Fall 2018). Clicking on any of the package names will give additional information about the package including documentation (hopefully).
If you don’t have a package installed and try to use it, like:
using Primes
You will get an error that it isn’t installed. You can add the package by
using Pkg
Pkg.add("Primes")
and after fetching the package, rerunning
using Primes
should no longer give an error. Then, for example, try
isprime(17)
which returns true because 17 is a prime number. This is a nondeterministic function that determines if a number is true. The documentation for the Primes package is at https://github.com/JuliaMath/Primes.jl and demonstrates 4 commands including isprime and factor which returns all prime factors (and the order).
A few other packages that we have seen or will see:
Chapter 14 will show how to create our own packages also called a module.
Although we can use the Pkg package to handle packages, this section will use the terminal REPL to handle any non-standard packages. Additional documentation on this is given in [https://docs.julialang.org/en/latest/stdlib/Pkg/](Julia’s package manager help pages) First, open up a terminal version of julia (generally by opening the application that you downloaded). You will get:
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.0.0 (2018-08-08)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
or similar and then
julia>
which means we’re ready to handle julia commands. If we type ], then the prompt turns into:
(v1.0) pkg>
There are a number of commands that we will cover here:
In the package command line, type add package_name to add the package. For example, to add the ForwardDff package:
add ForwardDiff
and it is not installed, you will get something like:
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Updating `~/.julia/environments/v1.0/Project.toml`
[f6369f11] + ForwardDiff v0.9.0
Updating `~/.julia/environments/v1.0/Manifest.toml`
[9e28174c] + BinDeps v0.8.10
[bbf7d656] + CommonSubexpressions v0.2.0
[163ba53b] + DiffResults v0.0.3
[b552c78f] + DiffRules v0.0.7
[f6369f11] + ForwardDiff v0.9.0
[77ba4419] + NaNMath v0.3.2
[276daf66] + SpecialFunctions v0.7.0
[90137ffa] + StaticArrays v0.8.3
A few things to note:
Updating line is the package (and version) that you are installing.Updating line is all of the packages that this depends on.If you want to add multiple packages at the same time, say packages A, B and C, type add A B C. You can also add particular versions of a package (often for testing or to avoid a bug). For example, if you want version 0.3.0 of ForwardDiff type:
add ForwardDiff@0.3.0
You will then get info on the dependencies on that version.
The status command (or st) will just list all of the main packages installed. For example,
Status `~/.julia/environments/v1.0/Project.toml`
[c52e3926] Atom v0.7.6
[336ed68f] CSV v0.3.1
[a93c6f00] DataFrames v0.13.1
[f6369f11] ForwardDiff v0.9.0
[7073ff75] IJulia v1.12.0
[e5e0dc1b] Juno v0.5.3
[1a8c2f83] Query v0.10.0
and note that these are just the packages added by the add command, not all of the dependencies. If you want all of the dependencies as well, type st --manifest and I get a huge list of packages.
You can remove a package by typing remove or rm then the package name. If I want to remove the ForwardDiff package, then
remove ForwardDiff
we get the following:
Updating `~/.julia/environments/v1.0/Project.toml`
[f6369f11] - ForwardDiff v0.3.0
Updating `~/.julia/environments/v1.0/Manifest.toml`
[49dc2e85] - Calculus v0.4.1
[c5cfe0b6] - DiffBase v0.2.0
[f6369f11] - ForwardDiff v0.3.0
[77ba4419] - NaNMath v0.3.2
Note:
rm command removes the package from the list of available packages, but doesn’t remove them from your harddrive.~/.julia/packages directory, which is where they are stored.If you type update or up you will update all of the installed packages (and dependencies). For example:
Updating `~/.julia/environments/v1.0/Project.toml`
[7073ff75] ↑ IJulia v1.11.1 ⇒ v1.12.0
Updating `~/.julia/environments/v1.0/Manifest.toml`
[7073ff75] ↑ IJulia v1.11.1 ⇒ v1.12.0
[b85f4697] ↑ SoftGlobalScope v1.0.5 ⇒ v1.0.7
[5e66a065] ↑ TableShowUtils v0.1.1 ⇒ v0.2.0
and all updates will be with an ↑. If you only want to update a single package, type the name after update.
Generally a package is built after it is installed. Building a package might include running code (or unpacking files) after it is installed. Sometimes if things get wonky, rebuilding is a good thing to do.
build
or if you only want say IJulia built,
build IJulia
When a package is used, often it requests to be compiled. For example, when using Primes, then following is shown:
[ Info: Precompiling Primes [27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae]
and basically some code is compiled beforehand, generally to speed up code. You can precompile all code with
precompile
and it may take a while, but you won’t have to wait, when you load the package with the using command.
To test a packge, say the ForwardDiff package, then
test ForwardDiff
It list all of the dependencies first, and then runs a number of tests (and we will show how to write tests soon) and timing information. After a while, it finishes sucessfully.