🐤

開発中のJuliaパッケージをNotebook上で呼び出す方法

2023/03/16に公開

https://qiita.com/cometscome_phys/items/989389db3540ebd9e026

Juliaのパッケージの作り方は上記の記事が参考になります. パッケージを作る際, Jupyter Notebook上で動作確認したり使い勝手を確かめながら開発を進めたいことがあります. あまり難しくはありませんが, 方法をまとめておきます.

呼び出す方法

下記のようにノートブック上Pkg.activate("パッケージのフォルダのパス")とすれば開発途中のパッケージや野良パッケージをusing パッケージ名で呼び出せるようになります. また, using Reviseによって, パッケージのソースコードを書き換えた際の変更が随時適用されます(ただし, パッケージを呼び出す前にRevise.jlを読み込んでおく必要があります). Revice.jlを使ったことが無い場合は, Pkg.add("Revise")のコメントアウトを外してインストールしておきましょう.

using Pkg
# Pkg.add("Revise")
using Revise
Pkg.activate("パッケージのフォルダのパス")
using パッケージ名

こちらの記事のようにPkgTemplates.jlでパッケージを作成した場合, pwd()の出力先のディレクトリに作成されているはずです. 作成する場所を指定したい場合, PowerShell等でディレクトリを移動してからjuliaを起動しましょう. あるいは

include("パッケージのフォルダのパス/src/パッケージ名.jl")
using .パッケージ名

のように起動することもできますが, Documenter.jlを使ってドキュメントを生成する場合, docs/make.jlusing パッケージ名が含まれており.が不足しているためにエラーが出ます.

具体例

例えば, 次のようなソースコードの場合を考えます.

パッケージ名/src/パッケージ名.jl
module パッケージ名

function hello(a)
  println(a)
end

end

このとき, パッケージ内の関数は下記のようにすれば呼び出せるはずです. (パッケージを書き換えれば結果も変わりますが, using Reviseが無いとパッケージの読み込み時点の結果しか出力されず, ソースコードの変更が結果に反映されません.)

julia> パッケージ名.hello(123)
123

パッケージ名を省略したい

もし, パッケージ名を省略して関数を呼び出したい場合, 下記のようにexport helloとします.

パッケージ名/src/パッケージ名.jl
module パッケージ名

export hello

function hello(a)
  println(a)
end

end

このとき, 下記のようにhello()だけで呼び出せます.

julia> hello(123)
123

テストの実行

テストは下記のように実行できます.

include("パッケージのフォルダのパス/test/runtests.jl")

Discussion