mcpField
M
matlab-call-python

matlab-call-python

github.com/matlab開発1.2k61 回インストール1 日前に更新
リポジトリ

matlab-call-python について

MATLAB から Python ライブラリを呼び出し、Python 環境を設定するためのスキルです。`py.*`、`pyrun`、`pyrunfile` を使うコードや環境エラーの解決に向け、現行 API、引数型、復旧手順を案内します。

主な機能

  1. 01`py.*`・`pyrun`・`pyrunfile` の使用
  2. 02`pyenv` による Python 環境の設定
  3. 03Python の整数・文字列配列引数への対応
  4. 04環境問題とコードエラーの切り分け
  5. 05モジュール再読み込みと復旧手順

活用シーン

  1. 01MATLAB スクリプトから Python パッケージを呼び出す
  2. 02MATLAB で仮想環境を使う設定
  3. 03モジュール不足や未設定エラーの調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-call-python

インストール後、Claude Code で/matlab-call-pythonを入力して読み込まれたか確認します。

同梱ファイルmanifest.yamlreferences/environment-setup.md

詳細

MATLAB から Python を呼び出す

最新の API、適切な環境設定、構造化されたエラー回復を使用して、MATLAB から Python ライブラリを呼び出します。

使用する場合

  • py.*、pyrun、または pyrunfile を使って Python を呼び出す MATLAB コードを作成するとき
  • MATLAB コードで ModuleNotFoundError、Python is not configured、またはその他の Python 関連エラーが発生するとき
  • Python を MATLAB 用に設定する、または仮想環境を作成するようユーザーから依頼されたとき
  • MATLAB で使用する Python パッケージをインストールするようユーザーから依頼されたとき

使用しない場合

  • Python から MATLAB を呼び出す場合(MATLAB Engine API for Python — 呼び出しの方向が異なります)
  • MEX ファイルまたは Python C 拡張をビルドする場合
  • MATLAB を使用しない純粋な Python 開発
  • MATLAB Compiler または MATLAB Production Server へのデプロイ

ルール

pyargs は絶対に使用しないでください

Python のキーワード引数には MATLAB の name=value 構文を使用してください。pyargs は古い方法です(name=value は R2021a 以降で使用できます)。

% TEMPLATE — not executable (requires scikit-learn)
rfc = py.sklearn.ensemble.RandomForestClassifier(n_estimators=int32(100), random_state=int32(42));
pyversion は絶対に使用しないでください

pyversion は推奨されていません。terminate、ExecutionMode、環境の切り替えに対応する pyenv を使用してください。

pip のインストールと venv の作成には必ず Bash ツールを使用してください

MATLAB の system() は使用しないでください。Bash ツールを使うと出力をストリーミングでき、複雑な文字列のエスケープも避けられます。

pip のインストールや venv の作成前には、必ず復旧手順に従ってください

pip のインストールや仮想環境の作成を実行する前に、必ず references/environment-setup.md に従ってください。エラートレースバックから Python のパスを推測しないでください。そこに表示されるパスは importlib の内部パスであり、正しいインストール先ではありません。

terminate(pyenv) を呼び出す前には、必ずユーザーの確認を得てください

terminate(pyenv) を実行すると Python プロセスが再起動し、すべての Python の状態(インポート済みのモジュール、変数、開いている接続)が消去されます。失われる内容を必ずユーザーに伝え、呼び出す前に明示的な同意を得てください。

Python が int を必要とする場合は、必ず整数型でラップしてください

MATLAB はデフォルトで double を渡します。int を必要とする Python 関数に float が渡されると、TypeError が発生します。カウント、インデックス、サイズ引数には int32() を使用してください。値が 32 ビットに収まらない場合は、オーバーフローを防ぐために int64() または uint64() を使用してください。

文字列配列には必ず pystringarray を使用してください(R2026a 以降)

R2026a 以降で MATLAB の文字列配列を Python に渡す場合は、pystringarray を使用してください。NumPy 2.0 以降が必要です。R2025b 以前、または NumPy が 2.0 未満の場合は、py.list(cellstr(...)) を使用してください。

% R2026a and later:
names = ["Alice", "Bob", "Charlie"];
pyNames = pystringarray(names);

% R2025b and earlier:
names = ["Alice", "Bob", "Charlie"];
pyNames = py.list(cellstr(names));

ワークフロー

MATLAB から Python を呼び出す際は、次のワークフローに従ってください。

1. 最新の構文を使用して Python コードを記述する
result = py.module.function(arg1, arg2, kwarg1="value", kwarg2=42);

直接関数を呼び出す場合は py.module.function(...) を優先してください。読みやすく、MATLAB ワークスペースと連携し、タブ補完にも対応しています。複数の文を含み、変数やインポートを呼び出し間で Python メモリに保持するスクリプト(REPL のような実行)には pyrun を使用してください。独立した .py ファイルを実行する場合(コマンドラインからの実行と同等で、状態は引き継がれません)には pyrunfile を使用してください。

2. コードを実行する

インラインコードには mcp__matlab__evaluate_matlab_code、スクリプトファイルには mcp__matlab__run_matlab_file を使用して実行します。

3. 成功した場合 — 完了
4. Python エラーで失敗した場合 — 原因を切り分ける

環境関連のエラーに限り、references/environment-setup.md に従ってください。

  1. ModuleNotFoundError
  2. 未解決の py.* 名に関する MATLAB エラー(例:「Unable to resolve the name 'py.numpy'」)
  3. pyenv().Executable が空
  4. 環境がサポートされていないというエラーが py または pyenv の呼び出しで発生する
  5. ライブラリが不足している、または環境が設定されていないことを示唆するその他のエラー

それ以外の Python エラー(ValueError、TypeError、Python コード自体のロジックエラー)については、コードを直接デバッグしてください。これらは環境の問題ではなく、コードの不具合です。

主な機能

機能目的利用可能なバージョン
pyenvPython 環境の照会/設定R2019b
pyrunPython の文を実行します。変数は呼び出し間で保持されますR2021b
pyrunfileスタンドアロンの .py ファイルを実行しますR2021b
pystringarrayMATLAB の文字列配列を Python に渡しますR2026a

InProcess と OutOfProcess

  • OutOfProcess:Python を別のプロセスで起動します。MATLAB と Python 間のサードパーティライブラリの競合を軽減するため、ほとんどの Python パッケージを競合なく使用できます。terminate(pyenv) を実行すると、MATLAB を再起動せずに Python を再起動できます。環境を自由に切り替えられます。
  • InProcess:(デフォルト)同じ MATLAB プロセス内で Python を起動します。パフォーマンスが向上するため、こちらを推奨します。終了できません。InProcess モードですでに Python が読み込まれている場合、Python の設定を変更するには MATLAB を完全に再起動する必要があります。

ExecutionMode="OutOfProcess" でカスタム Python モジュールを使用しており、モジュールの読み込み後に変更を加える場合や、セッション中にパッケージをインストールする場合は、モジュールを再度呼び出す前に必ず terminate(pyenv) を実行してください。

ExecutionMode="InProcess" でカスタム Python モジュールを使用しており、モジュールの読み込み後に変更を加える場合は、次を実行して必ずモジュールを再読み込みしてください。

clear all;
clear classes;
mod = py.importlib.import_module("<module_name>");
py.importlib.reload(mod);

使用パターン

キーワード引数を使って Python 関数を呼び出す
rfc = py.sklearn.ensemble.RandomForestClassifier(n_estimators=int32(100), random_state=int32(42));
rfc.fit(XTrain, yTrain);
predictions = double(rfc.predict(XTest));
仮想環境を使用するように MATLAB を設定する

Bash ツールを使用して仮想環境(venv)を作成した後、MATLAB がその環境を使用するように設定します。

% Terminate current Python if loaded
terminate(pyenv);

% Point at venv executable
pyenv(Version="/path/to/.venv/Scripts/python.exe");

% Verify
disp(pyenv().Executable);
py.numpy.array([1, 2, 3]);

規則

  • キーワード引数名が MATLAB 変数と競合する場合は、末尾に Val を付けます(例:py.complex(imag=imagVal)。py.complex(imag=imag) ではありません)。
  • 仮想環境を「アクティブ化」することは避けてください。MATLAB はアクティブ化スクリプトを使用しません。pyenv(Version=...) に venv の実行ファイルを直接指定してください。

著作権 2026 The MathWorks, Inc.


コメント