Были короткие ответы, но я хотел бы предоставить более полный ответ, если это возможно.
Когда вы запустите using MyModule
, Julia ищет его только в списке каталогов, известных как ваш LOAD_PATH
. Если вы наберете LOAD_PATH
в Джулией РЕПЛ, вы получите что-то вроде следующего:
2-element Array{ByteString,1}:
"/Applications/Julia-0.4.5.app/Contents/Resources/julia/local/share/julia/site/v0.4"
"/Applications/Julia-0.4.5.app/Contents/Resources/julia/share/julia/site/v0.4"
Эти каталоги, которые Джулия будет искать модули включить при вводе using Hello
. В примере, который вы указали, поскольку Hello
не было в вашем LOAD_PATH
, Джулия не смогла его найти.
Если вы хотите включить локальный модуль, вы можете указать его местоположение относительно текущего рабочего каталога.
julia> include("./src/Hello.jl")
После того, как файл был включен, вы можете запустить using Hello
как обычно, чтобы получить все то же самое поведение. Для одного сценария это, вероятно, лучшее решение. Однако, если вы обнаружите, что у вас есть include()
определенный набор каталогов, вы можете надолго добавить их в свой LOAD_PATH
.
Добавления каталогов в LOAD_PATH
Ручного добавления каталогов в ваш LOAD_PATH
может быть болью, если вы хотите регулярно использовать отдельные модули, которые хранятся за пределами Юли LOAD_PATH
. В этом случае вы можете добавить дополнительные каталоги в переменную среды LOAD_PATH
. Затем Джулия будет автоматически искать эти каталоги всякий раз, когда вы выдаете команду import
или using
.
Один из способов сделать это - добавить в свой .basrc
, .profile
, .zshrc
.
export JULIA_LOAD_PATH="/path/to/module/storage/folder"
Это добавит этот каталог в стандартные каталоги, которые Джулия будет искать. Если затем запустить
julia> LOAD_PATH
Она должна возвращать
3-element Array{ByteString,1}:
"/path/to/module/storage/folder"
"/Applications/Julia-0.4.5.app/Contents/Resources/julia/local/share/julia/site/v0.4"
"/Applications/Julia-0.4.5.app/Contents/Resources/julia/share/julia/site/v0.4"
Теперь вы можете свободно работать using Hello
и Джулия автоматически найдет модуль (до тех пор, как она хранится под /path/to/module/storage/folder
.
Для более информацию, взгляните на страницу this из документации Julia.
Что означает знак «использование»? Я думал, что это kw будет включать в себя модуль для меня ... – dopatraman
@dopatraman 'using' - это ввести имена модуля в текущую область, в то время как сам модуль не будет' include() 'automaticlly (за исключением тех, «LOAD_PATH») –
Если у вас есть определения внутри 'module', вам также необходимо экспортировать их. – m33lky