Как включить файл из другого каталога в Julia 0.7? - PullRequest
0 голосов
/ 29 ноября 2018

Изучая Джулию, я наткнулся на базовую задачу по включению файлов из другого каталога.У меня есть два каталога: Core и Explore , ни один из которых не является родительским для другого;увидеть рисунок.В каталоге Core есть файл Core.jl с

  module Core
    foo() = 1
  end

, или это может быть базовый файл .jl , а не модуль,с foo().

Directory structure

Файл Explore.jl , в каталоге Explore , необходимо использовать foo() из Core.jl .Поэтому я попытался вставить следующие строки в Explore.jl : /Users/me/PycharmProjects/juliaProjects/src/Core/Core.jl, include("./Core.jl") и другие перестановки.Однако я продолжаю получать ошибки, такие как

 ERROR: LoadError: could not open file    /Users/me/PycharmProjects/juliaProjects/src/Core/Core.jl
 Stacktrace:
[1] include at ./boot.jl:317 [inlined]
[2] include_relative(::Module, ::String) at ./loading.jl:1038
[3] include(::Module, ::String) at ./sysimg.jl:29
[4] include(::String) at ./client.jl:398
[5] top-level scope at none:0
[6] include at ./boot.jl:317 [inlined]
[7] include_relative(::Module, ::String) at ./loading.jl:1038
[8] include(::Module, ::String) at ./sysimg.jl:29
[9] exec_options(::Base.JLOptions) at ./client.jl:239
[10] _start() at ./client.jl:432
in expression starting at /Users

Вопрос: Какую правильную include спецификацию можно вставить в jl. файл?

Среда - Julia 0.7 в Mac OS High Sierra.Обратите внимание, что я использую не оболочку, а IDE, а именно плагин julia 0.3.3 для Intellij 2018.3.

Я проверял другие вопросы по SO, например, загрузка модуляиз локального каталога в Julia , Как импортировать пользовательский модуль в Julia , Каким должен быть путь к исходному файлу Julia? , но они, похоже, не работают.

Редактировать: На основании принятого ответа файл Explore.jl должен содержать

cd("src/Core")
include("../Core/Core.jl")

1 Ответ

0 голосов
/ 29 ноября 2018

Вы не можете назвать модуль Core, потому что это зарезервированное имя и (проверено на моем компьютере) создание такого модуля неожиданно приводит к сбою Джулии.

Пожалуйста, посмотрите пример сеанса julia ниже, чтобы понять, какчтобы создать и загрузить модуль, расположенный в другой папке (обратите внимание, что при переходе с julia> на shell> приглашение вызывается нажатием ;, а выход shell> - с backspace ):

shell> mkdir mymod

shell> vim mymod/mod.jl

shell> more mymod/mod.jl
module MyMod
foo() = 1
end

shell> mkdir dir2

julia> cd("dir2")

julia> include("../mymod/mod.jl")
Main.MyMod

julia> using Main.MyMod

julia> MyMod.foo()
1
...