Я пытаюсь использовать модуль subprocess
вместе с классом Popen
для создания и запуска процесса. До сих пор мне всегда удавалось вызывать любую программу, которую я хотел.
Теперь я пытаюсь вызвать paraview
(версия 3.8.1) со скриптом python, прикрепленным к нему в качестве параметра, например так:
paraview --script=script.py
Если я запускаю эту команду из консоли, она работает просто отлично. Если я попытаюсь запустить его с моим классом Popen
, произойдет сбой с сообщением об ошибке:
/home/woltan/local/lib/python2.7/site.py:157: Warning: 'with' will become a reserved keyword in Python 2.6
'import site' failed; use -v for traceback
/home/woltan/local/lib/python2.7/linecache.py:127: Warning: 'with' will become a reserved keyword in Python 2.6
/home/woltan/local/lib/python2.7/site.py:157: Warning: 'with' will become a reserved keyword in Python 2.6
'import site' failed; use -v for traceback
ERROR: In /home/kitware/Kitware/ParaView-3.8.1/source/Utilities/VTKPythonWrapping/Executable/vtkPVPythonInteractiveInterpretor.cxx, line 75
vtkPVPythonInteractiveInterpretor (0x124e9d0): Failed to locate the InteractiveConsole object.
Сам Paraview запускается. Но является ли сообщение об ошибке тем, что у самого paraview есть интерпретатор python, который он использует? Или я могу настроить свою Popen
процедуру вызова, которая выглядит следующим образом:
p = subprocess.Popen("paraview --script=script.py", bufsize = -1, shell = True)
Как может быть, что процесс может быть создан из консоли, но не с помощью Popen
-вызова сверху?
Редактировать
Я скачал и установил версию paraview, в которой работает python 2.7 (а не python 2.5 версии, которую я использовал выше), и вызов Popen
работает. Так что это должно быть как-то связано с Python-версией paraview. Единственный оставшийся вопрос: почему это вообще имеет значение, когда я запускаю процесс с Popen
?