Я занимаюсь разработкой приложения Django, которое запускает скрипты Matlab с помощью класса Python Popen. Сценарий python, который вызывает сценарии Matlab, находится в главной папке моего приложения Django (с views.py). Когда я вызываю скрипт из командной строки, он запускается как чудо, но когда я делаю запрос от клиента для запуска соответствующего скрипта python, я получаю следующее предупреждение:
" Copyright 1984-2018 The MathWorks, Inc. R2018a (9.4.0.813654) 64-разрядная (glnxa64) 23 февраля 2018 г. Для начала введите один из них: helpwin, helpdesk или demo Для получения информации о продукте посетите www.mathworks.com. >> [Предупреждение: невозможно создать папку настроек в /var/www/.matlab/R2018a. Расположение папки настроек должно быть доступно для записи. Использование папки временных настроек для этого сеанса MATLAB. Подробнее см. В документации по настройкам.] >>
Мое приложение использует виртуальную среду Python и развертывается на веб-сервере Apache.
Вот мой скрипт на python, который вызывает скрипты Matlab:
import os
import subprocess as sp
import pymat_config
def pymat_run():
pwd = pymat_config.pwd_config['pwd']
cmd1 = "-r \"Arg_in = '/path/to/my/main/folder/input.txt'; Arg_out = '/path/to/my/main/folder/file.txt'; matlab_script1\""
baseCmd1 = ['/usr/local/MATLAB/R2018a/bin/matlab', '-nodesktop', '-nosplash', '-nodisplay', 'nojvm', cmd1]
os.chdir('/path/to/matlab_script1')
sudo_cmd = sp.Popen(['echo', pwd], stdout=sp.PIPE)
exec1 = sp.Popen(['sudo', '-S'] + baseCmd1, stdin=sudo_cmd.stdout, stdout=sp.PIPE, stderr=sp.PIPE)
out, err = exec1.communicate()
return out
Есть предложения?