1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonCall.jlを既存のcondaで環境管理する方法

Last updated at Posted at 2024-11-06

Juliaの勉強中。これまでPyCall.jl+matplotlibで作図していたが、今回PythonCall.jl+matplotlibの利用を試み、その環境管理の方法をまとめる。

結論、既存condaで管理しているenvsをそのまま利用することは自分にはできなかったが、既存condaのcondaコマンドを利用してパッケージ管理をする方法にたどり着いた。

公式フォーラムでは、新たに導入するのであればPythonCall.jlをお勧めする、と言っている人がいる。

環境

  • Intel iMac, macOS Sequoia 15.0.1
  • conda 23.11.0
  • julia 1.11.1

0. juliaのアンインストール

juliaupの利用を想定。
環境変数の情報が内部に残るみたいで、ゼロから構築する方が確実だった。.juliaも確実に削除、パスは要確認。

juliaup self uninstall
rm ~/.julia

1. juliaのインストール

公式を参照。

curl -fsSL https://install.julialang.org | sh

カスタマイズは多分で任意で大丈夫(今回はデフォルト)。

2. 環境変数の設定

多分ここが大事、最初に設定することが大事、多分。

export JULIA_CONDAPKG_EXE=path/to/ana(mini)conda/bin/conda
export JULIA_CONDAPKG_BACKEND=""
export JULIA_CONDAPKG_ENV=""

一つ目のexportは使いたいcondaコマンドへのパス1

二つ目と三つ目のexport絶対に設定してはいけないという戒めから明示的に空2。実行の必要はない、多分。

PyCall.jlは既存のconda環境をそのまま流用できたが、PythonCall.jlは既存のconda環境を使おうとするとshellにkillされてしまう(自分だけ?)。

試しにJULIA_CONDAPKG_ENVに既存conda環境のパス(envs以下)を指定し、PythonCall.jlが問題なく使えるなら解決、以下は不要。失敗したら0.juliaのアンインストールからやり直し。

3. CondaPkg.jlのインストール

julia REPLを起動、Pkgモード (])へ入り、まずCondaPkg.jl3をインストールする。

julia
pkg> add CondaPkg

ここでJULIA_CONDAPKG_EXEのコマンドが利用される。環境変数がリフレッシュされた場合はデフォのmambaが動き出す。それが嫌なので毎回export必須。初回で必要なパッケージを揃えてしまうのがよろしい。

必要なパッケージをインストール。

pkg> conda add matplotlib cartopy

4. PythonCall.jlのインストール

pkg> add PythonCall

あとはPyCall.jlと同様に使える。

julia> using PythonCall
julia> plt=pyimport("matplotlib.pyplot")
julia> ccrs=pyimport("cartopy.crs")

一応バージョンを確認する。

julia> m=pyimport("matplotlib")
julia> m.__version__

Python: '3.9.2'

julia> c=pyimport("cartopy")
julia> c.__version__

Python: '0.24.0'

成功🎉
なお、自分は作図で満足につき、他パッケージは未検証。

あとがき

新環境の構築が必要だが、buildが無い分PyCall.pyよりある意味楽ちんかも。

参考

PythonCall & JuliaCall - Guide

  1. デフォルトだとmabma(minimamba)でパッケージ管理がなされるが、これは最新バージョンの追従が遅いので、例えばcartopyをインストールするとpyhton3.9matplotlib1.xへダウングレードされてしまって涙。

  2. ENVの方へCONDA_JL_HOMEよろしく既存conda環境のパスを指定しconda addしたら、その環境を改変し始めた。。(途中エラーで改変されることはなかったが)

  3. PythonCall.jlCondaPkg.jlを利用しPyCall.jlConda.jlを利用するがCondaPkg.jlConda.jlと独立である一方PythonCall.jlPyCall.jlのconda環境を利用することができるらしい(WT*?!💢)。類似名の乱立はGPTの混乱をもたらしそうでNG。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?