我目前正在寻找一种方法,通过Java从python脚本获得一些输出。找到jython之后,我使用PythonInterpreter
发送参数并接收预期的输出。你知道吗
我的代码
PythonInterpreter interpreter = new PythonInterpreter();
String fileUrlPath = "/Users/me/Desktop/";
String scriptName = "pythonScript";
interpreter.exec("import sys\n" + "import os \n" + "sys.path.append('" + fileUrlPath + "')\n"+ "from "+scriptName+" import * \n");
String funcName = "predictionFunction";
PyObject someFunc = interpreter.get(funcName);
try
{
PyObject out = someFunc.__call__(new PyString(pathToImageFolder), new PyString(fileName));
System.out.println(out);
}
catch (PyException e)
{
e.printStackTrace();
}
我的问题
但每当我启动程序时,它都会显示numpy module not found
错误。所以我检查了python版本,它显示了2.7.0
,这是jythonpython解释器的版本。你知道吗
但是我所有的python库都安装在路径path/to/vir/env/bin
的虚拟环境中。因此,我需要将java PythonInterpreter
函数的解释器更改为我在虚拟环境中安装的python。你知道吗
有可能吗?如果是这样的话,如果有人能帮忙,我真的很感激。你知道吗
你的要求是不可能的。你知道吗
Jython不能使用C-API扩展,包括NumPy。将
sys.path
更改为包含安装NumPy的位置不会有帮助。你知道吗Jython可以使用Java包,而且有一些Java包用于基于数组的数字,但是没有一个可以替代NumPy;您必须重写所有代码才能使用完全不同的API,而且它可能没有您所依赖的功能。你知道吗
但是,如果您所要做的只是使用一些简单的字符串参数调用一些Python代码,并返回一个字符串作为输出,那么只需将CPython作为子进程运行即可。看起来这正是您所要做的:您有一些包装器代码,它只是导入您的模块,调用带有两个字符串的函数,并将返回值打印为字符串。你知道吗
步骤1:将Python代码封装在一个脚本中,该脚本通过
sys.argv
获取其参数,并通过print
输出其结果。你知道吗步骤2:使用安装了NumPy的virtualenv中的普通CPython解释器运行脚本,并使用管道捕获其输出。你知道吗
第三步:没有第三步。(或者是因为地球上的女孩很容易相处,所以生命发现了混沌理论?我不知道,全是杰夫·戈德布鲁姆。)
相关问题 更多 >
编程相关推荐