3

pygameモジュールを使用するPythonプログラムをMATLABから実行しようとしています。私はどちらも使用できることを知っています

system('python program.py')

あるいは単に

! python program.py

ただし、エラーが発生し続けます。

Traceback (most recent call last):
  File "program.py", line 1, in <module>
    import pygame
ImportError: No module named pygame

奇妙なことに、コマンドラインからプログラムを実行すると、問題なく動作します。MATLAB内から実行した場合、Pythonが見つからない理由を誰かが知っていますかpygame?

4

3 に答える 3

2

問題は、MATLABが通常Pythonライブラリとモジュールを格納するPYTHONPATHを認識していないことである可能性があります。カスタムモジュールの場合、PYTHONPATHにはカスタムフォルダーへのパスも含める必要があります。

MATLAB実行セッション内からPYTHONPATHの値を設定してみることができます。

PATH_PYTHON = '<python_lib_folder>' 
setenv('PYTHONPATH', PATH_PYTHON); % set env path (PYTHONPATH) for this session
system('python program.py'); 

ここで関連する可能性のあるSOの回答も参照してください:matlabからQtprojectを呼び出すにはどうすればよいですか?

于 2012-10-03T17:44:44.197 に答える
1

私はあまり頻繁にmatlabを使用しておらず、現在利用可能なプログラムがないため、はっきりとは言えませんが、matlabはカスタムパスを使用してカスタム環境を作成している可能性があります(これは頻繁に発生するため、ユーザーは彼らのソフトウェア)。matlabをインストールすると、独自のモジュールへのパスがデフォルト環境にエクスポートされない場合があります。したがって、matlabの外部でpygame.pyを呼び出すと、Pythonは通常のルックアップパスでpygame.pyを見つけることができません。

解決策は次のとおりです。

  • pygame.pyを見つけて、コード内で直接パスをマップします。ただし、これにより、後で展開中に頭痛が発生する可能性があります。

  • pygame.pyファイルを作業ディレクトリにコピーしてみてください。対処する必要のある依存関係がある可能性があります。

  • http://www.pygame.orgで開発者から直接pygameをインストールします。バージョンの違いが問題になる可能性がありますが、pygameはPythonの通常のルックアップパスの下に置かれます。(これは個人的には私の好みの解決策です。)

  • または、matlabのライブラリ内のpygameへのパスの場所をデフォルトの環境にエクスポートするだけです。これは、展開中にも問題になる可能性があります。

于 2012-10-03T17:41:29.957 に答える
0

後世のために、最初にStewieがここで指摘したすべてを試してください(MATLAB R2014bからPythonをロードしようとするときの「未定義の変数「py」またはクラス」?)。それが機能しない場合は、複数のpythonがある可能性があります。bash /ターミナルで(関連するすべてのインストール済みモジュールで)動作するPythonを試して確認できます。そして、

pyversion PYTHONPATH

matlabに正しいパスを知らせます。また、py.importlib.import_module('yourmodule')を使用して、その後モジュールをインポートします。それはあなたが始めるはずです。

于 2016-09-04T03:37:28.517 に答える