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 года устраняет эту проблему.

Другие вопросы по тегам