已經有一些簡短的答案,但我想提供一個更完整的答案,如果可能的話。
當您運行using MyModule
時,Julia只在名爲LOAD_PATH
的目錄列表中搜索它。如果您在朱莉婭REPL鍵入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無法找到它。
如果您希望包含本地模塊,則可以指定其相對於當前工作目錄的位置。
julia> include("./src/Hello.jl")
一旦包含文件,就可以正常運行using Hello
以獲得所有相同的行爲。對於一個腳本,這可能是最好的解決方案。但是,如果您發現自己經常不得不include()
某一組目錄,您可以永久將它們添加到您的LOAD_PATH
。
添加目錄LOAD_PATH
手動添加目錄到您的LOAD_PATH
可以是一個痛苦,如果你想經常使用存儲的朱莉婭LOAD_PATH
之外的特定模塊。在這種情況下,您可以將其他目錄附加到LOAD_PATH
環境變量。每當您發出import
或using
命令時,Julia都會自動搜索這些目錄。
執行此操作的一種方法是將以下內容添加到您的.basrc
,.profile
,.zshrc
。
export JULIA_LOAD_PATH="/path/to/module/storage/folder"
這會將該目錄追加到Julia將搜索的標準目錄中。如果你再運行
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
和Julia會自動查找模塊(只要它被存儲下面/path/to/module/storage/folder
。
更多信息,請看Julia Docs的this頁面
那麼'使用'的意義是什麼?我認爲這個kw會包含我的模塊... – dopatraman
@dopatraman'using'是將一個模塊的名字引入當前作用域,而模塊本身不會被include()'automaticlly(除了那些在「LOAD_PATH」) –
如果你在'module'中有定義,你也需要導出它們。 – m33lky