Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Runtime.exec()从Java代码调用Python脚本:ImportError:没有名为sklearn的模块_Java_Python_Intellij Idea - Fatal编程技术网

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

使用Runtime.exec()从Java代码调用Python脚本:ImportError:没有名为sklearn的模块,java,python,intellij-idea,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 当我运行java程序时,该程序使用以下命令调用python脚本 Process p = R

我有一个调用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

当我运行java程序时,该程序使用以下命令调用python脚本

 Process p = Runtime.getRuntime().exec("python /mydir/report.py");
我得到这个错误

ImportError: No module named sklearn
我的怀疑是intellij在某种程度上使用了Python2.7和Python3.7。原因是,当我使用python2.7直接在pyCharm中运行python脚本时,我得到了相同的错误,但在3.7中没有

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

尝试使用“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的详细用法:

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

pip install -U scikit-learn

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


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

非常感谢。用python3执行已解决。这是我在这里的第一个答案。。。很高兴我能帮忙!:在问题中,OP说他们做到了。