Вызов скрипта Python из кода Java с использованием Runtime.exec (): ImportError: Нет модуля с именем sklearn - PullRequest
0 голосов
/ 10 июля 2019

У меня есть Java-программа, которая вызывает скрипт Python.Этот скрипт Python имеет следующий импорт

 import numpy as np
 from sklearn import metrics

На моем Mac у меня уже есть Python 2.7, сейчас я установил Python 3.7 Я также установил модули numpy, scipy и sklearn, используя pip3.

ВIntellij, я выбрал интерпретатор Python 3.7 и Java1.8 для моего проекта

Когда я запускаю программу Java, которая вызывает скрипт Python, используя команду

 Process p = Runtime.getRuntime().exec("python /mydir/report.py");

, я получаю эту ошибку

ImportError: No module named sklearn

Я подозреваю, что Intellij использует Python 2.7 и Python 3.7.Причина в том, что когда я запускаю скрипт python непосредственно в pyCharm, используя python2.7, я получаю ту же ошибку, но не с 3.7

Пожалуйста, помогите решить эту проблему, я уже прошел все связанные вопросы SO и не помогдля этой ситуации

Ответы [ 3 ]

2 голосов
/ 10 июля 2019

Попробуйте использовать 'python3':

Process p = Runtime.getRuntime().exec("python3 /mydir/report.py");

Или вы можете попробовать:

ProcessBuilder pb = new ProcessBuilder("python", "/mydir/report.py"); /*Or python3*/
Process process = pb.start();

Для детального использования ProcessBuilder: https://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/

0 голосов
/ 10 июля 2019

Убедитесь, что вы используете правильную версию python. В некоторых ОС python3.x вызывается в командной строке как python3, и поэтому вам нужно изменить код exec на "python3 /mydir/report.py".

Если вы используете python3, pip будет поставляться вместе с установкой, и, следовательно, вам также может понадобиться запустить pip install -U scikit-learn.

0 голосов
/ 10 июля 2019

Ответ на ваш вопрос: нет модуля с именем sklearn.Попробуйте установить sklearn:

pip install -U scikit-learn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...