目次
#はじめに
本記事は,自分がUbuntu20.04でMATLABからPythonを呼び出すとき,仮想環境で処理させるために少々時間を費やしたので,備忘録として作成しました。
この記事のメインは3項目の対策手順ですが,2項目の試したことを行った場合に成功する可能性もあります。
#1. 実行環境
・Ubuntu20.04
・MATLAB R2021b
・Python3.8
#2. 試したこと
まず,MATLAB R2021aで導入されたpyenv
というPythonインタープリターの既定環境の詳細を取り出す関数を実行します。この関数の構文は以下の通りです。
pyenv('Version','executable')
そのため,具体的なコードは以下のようになります。
pyenv('Version','~/anaconda3/envs/仮想環境名/bin/python')
このコードを実行すると,Pythonのバージョンや,ライブラリなどのパスがanacondaの仮想環境に指定されると思います。
ここで呼び出すPythonプログラムに以下のようなプログラムを用いてPythonのバージョンを表示します。
import sys
print(sys.version)
また,MATLAB側で上記のプログラムを呼び出し,pythonの出力を取り出したい場合は以下のように実行します。
command = "python ~/matlab.m"
status = dos(command)
この二つのプログラムによって呼び出したpythonプログラムがどのバージョンで実行されているのか確認できると思います。しかし,root環境と仮想環境のバージョンが同じである場合は,バージョンで確認しても判断が難しいので,root環境にはインストールされていないパッケージをimport 'パッケージ名'
とするだけでも確認ができると思います。
この方法で出来る方もいらっしゃると思いますが,自分の場合では成功しなかったので下に続きます。
#3. 対策手順
先ほどの方法で成功しなかった場合は,Ubuntuのターミナルの方で仮想環境をアクティベートし,MATLABを起動します。root環境(base)にいる際は3行を,特にどこにも入っていない場合は下の2行のみを実行します。
(base)$ conda deactivate
$ conda activate "環境名"
("環境名")$ MATLAB
呼び出されたMATLABを使用して,2項目で述べた方法を実行すれば指定した仮想環境でのpython呼び出しが可能になると思います。
(ちなみにですが,2項目でパス指定を行うと,MATLABを閉じた後も残り続けると思いますので,再びパス指定などを行う必要はないかもしれません。)
本記事は以上です。最後までお読みいただきありがとうございました。