Необходимо по команде выполнить запуск python скрипта. Не использовал jython т.к. скрипт содержит библиотеку todoist-api. Запуск скрипта выполняется по команде:
try {
String cmd = "/home/kiryushin/projects/python/stm/venv/lib/stmtest1.py";
Process p = Runtime.getRuntime().exec(cmd);
}
catch (IOException e){e.printStackTrace();}
на что получаю исключение -
" java.io.IOException: Cannot run program "/home/kiryushin/projects/python/stm/venv/lib/stmtest1.py": error=13, Отказано в доступе"
Менял параметры доступа в том числе через chmod -r 777. OC Ubuntu 18.04 lts.
По комментариям стало ясно, что проблема запуска - не найден интерпретатор python.
Одного chmod +x [имя скрипта] недостаточно, чтобы сделать файл исполняемым. Точнее сказать: правильно исполняемым.
chmod +x и "shebang"По классике, надо добавить первой строкой в скрипте "shebang": #!python или #!/usr/bin/python или #!//usr/bin/env python или даже #p!ipenv run
Главноe - надо помнить, что окружение созданное Runtime.getRuntime() может отличаться от того, что может создаваться в bash/zsh/fish/etc и проверять $PATH, $PYTHONPATH и прочее.
cmd напрямуюИзменить команду запуска скрипта, не полагаясь на "shebang" и указать интерпретатор напрямую:
String cmd = "python /home/kiryushin/projects/python/stm/venv/lib/stmtest1.py";
Проверять опять же переменные окружения созданные Runtime.getRuntime.
Интерпретатор:
pythonpipenv и запускать c pipenv run [имя скрипта]По незнанию, при создании проекта python забыл, что указал создание виртуальной среды и поэтому после запуска скрипта из Runtime не мог подцепить библиотеку todoist-api. Поэтому я:
В вызове скрипта указал:
String cmd = "python3.6 /home/kiryushin/projects/python/stm2/stm.py"; Process p = Runtime.getRuntime().exec(cmd);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости