14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JuliaAdvent Calendar 2017

Day 8

julia で使う python を 3系にする

Posted at

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.jlCONDA_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 パッケージのアップデート

その他のUsage

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](...)` に置き換える
14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?