我目前正在寻找一种通过Java从python脚本获取一些输出的方法。找到jython之后,我使用$('ul li').on('click', function() {
var name = $(this).data('name');
$('.main-image').addClass(name);
// I know this doesn't work.
// $(this).removeClass(name);
});
发送参数并接收期望的输出。
我的代码
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();
}
错误。因此,我检查了python版本,并显示了numpy module not found
,它是jython python解释器的版本。
但是我所有的python库都已安装在虚拟环境中的路径2.7.0
中。因此,我需要将Java path/to/vir/env/bin
函数的解释器更改为我在虚拟环境中安装的python。
有可能吗?如果是这样,非常感谢有人可以提供帮助。
答案 0 :(得分:2)
您要的是不可能的。
Jython无法使用C-API扩展,其中包括NumPy。更改sys.path
使其不包含NumPy的安装位置。
Jython 可以使用Java程序包,并且有一些Java程序包用于基于数组的数字,但是它们都不能替代NumPy。您必须重写所有代码才能使用完全不同的API,并且它可能没有您所依赖的功能。
但是,如果您要做的只是用一些简单的字符串参数调用一些Python代码并返回一个字符串作为输出,则可以通过将CPython作为子进程运行来实现。看来这正是您的工作:您已经有了一些包装器代码,这些包装器代码仅导入您的模块,使用两个字符串调用一个函数,然后将返回值打印为字符串。
第1步:将Python代码包装到一个脚本中,该脚本通过sys.argv
获取其参数,并通过print
输出其结果。
第2步:使用安装了NumPy的virtualenv中的普通CPython解释器运行脚本,并使用管道捕获其输出。
第3步,没有第3步。(或者是因为地球女孩很容易,生活中发现了一些混乱的理论吗?我不知道,这就是杰夫·戈德布鲁姆的全部。)