Проблема с использованием системного вызова для выполнения скрипта Python из MATLAB - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть функция MATLAB, которая должна взаимодействовать (не быстро и не часто) с кодом Python.У меня есть MATLAB записи чисел в файл.Python читает файл, выполняет некоторые вычисления и записывает некоторые результаты в другой файл.Затем MATLAB читает этот файл и продолжает работу.

Проблема, с которой я столкнулся, заключается в том, что я хочу выполнить скрипт python из MATLAB.В прошлом я обнаружил, что достаточно просто выполнить системный вызов в MATLAB:

system ('python myscript.py')

Однако, похоже,не похоже на функцию numpy 'loadtxt', когда она достигает этой точки в скрипте python:

NameError: имя 'loadtxt' не определено

Я ее определяю (от обалденного импорта *).Если я просто выполняю скрипт из терминала, он прекрасно читает файл, используя loadtxt.Только когда я выполняю скрипт, используя системный вызов, я получаю эту ошибку.Файл Python .py находится в том же каталоге, что и файл MATLAB .m, который выполняет системный вызов.Я выполнил другие сценарии без loadtxt просто отлично, используя этот же метод.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

Похоже, вы используете OS X. Настоятельно не рекомендуется пытаться разобраться с глобальным определением того, какой интерпретатор python использовать в OS X.

Возможно, вы просто позвоните нужному переводчику напрямую. Поэтому вместо вызова system('python myscript.py') получите полный путь к нужному интерпретатору в переменной и вызовите:

system([use_this_python ' myscript.py'])

или что-то подобное.

Как именно вы хотите определить, какой интерпретатор Python использовать между вами и тем, кто его использует. Возможно, он по умолчанию просто вызывает «python», но позволяет пользователю указать произвольный интерпретатор через конфигурационный файл.

0 голосов
/ 15 февраля 2011

Оболочка в вашей системе и оболочка, открытая Matlab при выполнении команды system, не обязательно совпадают.

Важно отметить, что могут быть разные переменные окружения.Попробуйте, например, выполнить system('echo $PATH'), чтобы проверить, есть ли у вас доступ ко всем вашим библиотекам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...