julia advent calendar の8日目の記事です
概要
- julia の docker image を作ってみました
独自の julia docker image を作ってみる - Dockerfile をいじっている内に、julia が導入する miniconda が 2.x であることに気がつきました
- python3.x にしよう
julia 内で miniconda を導入するPkg
Pkg.add
によって, IJulia.jl
や, PyPlot.jl
を導入するとき, Conda.jl
や, PyCall.jl
がよばれます
Conda.jl
PyCall.jl
が参照しているpythonは windows , osx の場合, PATH
ではなく、Conda.jl
の CONDA_JL_HOME
を参照します. linux の場合は, PATH
を参照します
参考
CONDA_JL_HOME
に miniconda 下の仮想環境 conda_jl
へのパスを設定しておけば、Pkg.add("Conda.jl")
時に, conda_jl 環境が作成され、参照されます
また、Conda.jl
を追加する前に
CONDA_JL_VERSION
に"3"
を設定しておけば、python3.x が利用できます
デフォルトでは"2"
参考
export CONDA_JL_VERSON="3"
/paht/to/miniconda/bin/conda update --all -y
export CONDA_JL_HOME="/path/to/miniconda/envs/conda_jl"
Pkg.add("Conda.jl")
using Conda
Conda.PYTHONDIR # python のパス
Conda.list() # インストールされている python パッケージのリスト
Conda.add("パッケージ名") # python パッケージのインストール
Conda.rm("パッケージ名") # python パッケージのアンインストール
Conda.update() # python パッケージのアップデート
PyCall.jl
Conda.jl
によってインストールされます
Pkg.add("PyCall.jl")
using PyCall
PyCall.pyversion # python のバージョンを表示
PyCall.pyprogramname # python の絶対パス
PyCall.libpython # python lib のパス
PyCall.conda # Conda Python をつかっているか true, false
PyCall
での python パッケージの追加
using PyCall
#@pyimport: import マクロ
@pyimport math
math.sin(math.pi / 4) - sin(pi / 4) # 0.0
@pyimport matplotlib.pyplot as plt
x = linspace(0,2*pi,1000); y = sin(3*x + 4*cos(2*x));
plt.plot(x, y, color="red", linewidth=2.0, linestyle="--")
plt.show()
# Python の型とJulia の型を相互に変換
# TODO: Numpy array 多次元配列の渡し方について後で書き足す
#@pywith: with ステートメントのマクロ
@pywith pybuiltin("open")("file.txt","w") as f begin
f[:write]("hello")
end
#オブジェクトのアトリビュート/メンバーズの扱いについてpythonとの違い
@pyimport Bio.Seq as s
@pyimport Bio.Alphabet as a
my_dna = s.Seq("AGTACACTGGT", a.generic_dna)
my_dna[:find]("ACT") # Python の場合は my_dna.find("ACT")
# Python での `o.method(...)` を `o[:method](...)` に置き換える