使用Runtime.exec()从Java代码调用Python脚本:ImportError:没有名为sklearn的模块

时间:2019-07-10 05:59:40

标签: java python intellij-idea

我有一个调用python脚本的Java程序。该python脚本具有以下导入

 import numpy as np
 from sklearn import metrics

在我的Mac上,我已经安装了python 2.7,现在安装了python 3.7 我还使用pip3安装了numpy,scipy和sklearn模块。

在Intellij中,我为项目选择了python 3.7解释器和Java1.8

当我运行使用命令

调用python脚本的Java程序时
 Process p = Runtime.getRuntime().exec("python /mydir/report.py");

我收到此错误

ImportError: No module named sklearn

我怀疑intellij是否以某种方式使用python 2.7和python 3.7。原因是当我直接使用python2.7在pyCharm中运行python脚本时,出现了相同的错误,但不是3.7

请帮助解决此问题,我已经经历了所有相关的SO问题,对这种情况没有帮助

3 个答案:

答案 0 :(得分:2)

尝试使用“ 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/

答案 1 :(得分:0)

确保您使用的是正确版本的python。在某些操作系统中,在命令行上将python3.x称为python3,因此您需要将exec代码更改为 "python3 /mydir/report.py"

如果您使用的是python3,则pip将随安装一起提供,因此,您可能还需要运行pip install -U scikit-learn

答案 2 :(得分:-1)

答案在您的问题中:没有名为sklearn的模块。 尝试安装sklearn:

pip install -U scikit-learn