Exec-функция PythonInterpreter возвращает пустой поток вывода
Я использую класс org.python.util.PythonInterpreter для выполнения кода Python в Java. Пожалуйста, найдите ниже фрагмент моего кода.
PythonInterpreter pythonInterpreter = new PythonInterpreter(null, new PySystemState());
ByteArrayOutputStream outStream = new ByteArrayOutputStream(16384);
pythonInterpreter.setOut(outStream);
pythonInterpreter.setErr(outStream);
// execute the code
pythonInterpreter.exec(script);
String consoleOutput = outStream.toString();
outStream.flush();
System.out.println("Console output :- "+consoleOutput);
Проблема с приведенным выше кодом для того же скрипта, иногда я получаю 'consoleOutput' пустым. Я не могу понять проблему. Для запуска вышеуказанного кода 1000 раз, по крайней мере, 4 раза я получаю пустой вывод.
С другой стороны, если я использую конструктор по умолчанию, как показано ниже, он работает просто отлично
PythonInterpreter pythonInterpreter = new PythonInterpreter();
1 ответ
Решение
Копаясь больше в проблему, которую я нашел, устанавливая свойство python.site.import
в false
вызывает эту проблему. Эта проблема возникает в автономной версии 2.7.0 Jython. Обновление автономного jar-релиза (2.7.1) от июня 2017 года устраняет эту проблему.