EDIT: оказалось, что оболочка модуля подпроцесса не имеет тех же каталогов, назначенных переменной PATH, что и оболочка моей системы. Таким образом, решение состоит в том, чтобы либо вызвать Maxima, используя полный путь (найденный через which maxima
), либо изменить env={'PATH':maxima_paths}
в параметрах subprocess.run (). Как отметил @RobertDodier, это не проблема конкретно Maxima.
У меня есть файл под названием testMaxima.txt, который содержит следующий код Maxima:
write_data([[1,2,3]], "test.txt");
Этот код Maxima создает файл test.txt
в рабочем каталоге.
Я хочу запустить этот файл с помощью сценария Python. Я не хочу вручную открывать Maxima (математический движок) для этого.
Что я пробовал: я знаю, что могу запустить этот файл в командной строке / терминале, используя maxima -b testMaxima.txt
, и я пытались использовать python модуль subprocess
для эмуляции этого кода со следующим кодом python:
import subprocess
subprocess.run("maxima -b testMaxima.txt", shell=True)
, но это не создает новый файл test.txt
, как должен. Если это помогает, когда я запускаю
>>> subprocess.call("maxima -b testMaxima.txt", shell=True)
127
, я получаю 127. Насколько я понимаю, это означает, что терминал не может найти данные команды. Однако, когда я выполняю код maxima -b testMaxima.txt
через терминал напрямую, проблем не возникает, поэтому я не уверен, почему он не может найти данные команды. Есть ли у кого-нибудь мысли о том, что мне следует попробовать?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Из совета @mkrieger я использую строку "maxima -b testMaxima.txt"
вместо последовательности ["maxima", "-b", "testMaxima.txt"]
. К сожалению, это не имеет значения.