I thought it sufficed to add your current working directory to
LOAD_PATH to use modules from there, but apparently that is not so. Is the only way to get local code (for small scale dev/testing) to use
include? I could swear this worked last week…
Julia Version 1.1.0
Commit 80516ca (2019-01-21 21:24 UTC)
julia> using MyMod
ERROR: ArgumentError: Package MyMod not found in current path:
- Run `import Pkg; Pkg.add("MyMod")` to install the MyMod package.
 require(::Module, ::Symbol) at ./loading.jl:823
I think you need to explicitly
include("MyMod.jl"), and then possibly
using .MyMod (since it’s just a module, not a package).
That all looks fine to me, and I checked that it works on my machine.
In situations like this, I find it useful to try to isolate the smallest difference between the broken example and a working example. For example, I would sanity check by creating a new, empty folder, creating a trivial file in that folder like:
# File: MyMod.jl
x = 1
and then running (in Julia):
julia> push!(LOAD_PATH, pwd())
julia> using MyMod
[ Info: Precompiling MyMod [top-level]
once you have a working example, it will be easier to figure out what the difference is between that and your (currently broken) example.
Thank you for your answer!
The issue was that I had an empty
Project.toml file lying around in that one directory. I’m only at the stage of playing around with
Projects and everything, so I’m breaking things.
Would you or anybody know of a good introduction to the above subjects?
Did you ever find the introduction you were looking for? I could really use one too…
I don’t think this particular behaviour is documented yet. If it is, it wasn’t visible enough for me to find it: I as well struggled with this issue a few months ago.
In particular, I had to look through Julia’s code to understand that any entry in
LOAD_PATH, whose directory contains a
Project.toml file, will be treated as a “project environment” only. In other words: having a
Project.toml file inhibits Julia from using it as a “package repository”.
An introduction, for now
At the moment, I would suggest you look at some of the posts I have written, starting with the “tips” found here:
→ Proper way of organizing code into subpackages - #3 by MA_Laforge
I also suggest you read the two posts of mine that directly follow it. I tried my best to give useful insight.
You might also be interested to take a look at the improved package/module documentation (v1.7):
→ Modules · The Julia Language
Overall though, I think the package/module documentation still needs some improvement (I just haven’t figured out how, exactly).