名前 py.myfunc を解決できない
MATLAB® コマンド プロンプトで py.
に続けて Python® ステートメントを入力すると、MATLAB は自動的に Python を読み込みます。MATLAB に次のメッセージが表示される場合、myfunc
の呼び出しでエラーが発生しています。
Unable to resolve the name py.myfunc
このページを使用してエラーのトラブルシューティングを行います。
Python がインストールされていない
サポートされているバージョンの Python がコンピューターにインストールされていません。お使いの MATLAB バージョンについてPython を使用するためのシステムの構成を確認し、https://www.python.org/downloads/
から Python をダウンロードのうえ、インストールしてください。
Linux® システムおよび Mac システムでソース ファイルから Python をビルドする場合は、--enable-shared
オプションを指定してビルドを構成します。
システムに Python がインストールされているかどうかを確認するには、PythonEnvironment
Version
プロパティを確認します。
pe = pyenv; if isempty(pe.Version) disp "Python not installed" end
Windows プラットフォームでの Python の 64 ビット/32 ビット バージョン
64 ビット バージョンの MATLAB に対して 32 ビット バージョンの Python をインストールしました。64 ビット バージョンの Python をインストールしなければなりません。
MATLAB で Python を検出できない
Python が標準とは異なる場所にあります。パスを Python 実行可能ファイルに指定するには、関数 pyenv
を使用します。以下に例を示します。
pyenv(Version="C:\Users\uname\WinPython-64bit-3..2.1\python-3..2.amd64\python.exe")
Windows® システムで、Python が Windows レジストリ内に見つかりません。Python インタープリターをダウンロードしたにもかかわらず、Windows レジストリに登録しなかった場合、Python の場所を指定します。
pyenv(Version="executable")
ユーザー定義の Python モジュールのエラー
ユーザー定義の Python モジュールでエラーが発生しました。モジュール mymod
にエラーが含まれるかどうかをテストするには、次を入力します。
py.importlib.import_module('mymod')
Python がモジュール内のエラーを検出した場合、MATLAB は Python エラー メッセージを表示します。
または、Python コマンド プロンプトで同等のステートメントを実行し、Python エラー メッセージを取得します。
エラーを修正後、更新されたモジュールにアクセスするには、MATLAB を再起動し、モジュールを検索パスに追加します。
Python 検索パスにない Python モジュール
command
が有効な Python コマンドである場合、Python モジュールが Python 検索パスに存在することを確認します。モジュール mymod
がパス上にあるかどうかをテストするには、次を入力します。
py.importlib.import_module('mymod')
Python がモジュールを検出できない場合、MATLAB は Python エラー メッセージを表示します。
フォルダー modpath
内の mymod
をパスに追加するには、以下を入力します。
P = py.sys.path; if count(P,'modpath') == 0 insert(P,int32(0),'modpath'); end
Python の検索パスは現在の MATLAB セッションに読み込まれた Python インタープリターに関連付けられます。MATLAB で検索パスを修正できますが、MATLAB の外部で他のインタープリターのインスタンスを実行している場合、修正内容は反映されません。
モジュール名の競合
標準ライブラリ内のモジュールまたはシステムにインストールされているサードパーティ製モジュールと同じ名前の Python モジュールを呼び出した場合、MATLAB は、誤ったモジュールを読み込む可能性があります。
Python が誤ったモジュールで myfunc
を実行しようとする
myfunc
がユーザー定義のモジュールにある場合、そのモジュール名が Python 標準ライブラリまたはご使用のシステム上のサードパーティ製モジュールと競合していないことを確認します。