VirtualEnv Python作为MacOS中的Java Python解释器

时间:2018-07-25 00:27:37

标签: java python jython

我目前正在寻找一种通过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。

有可能吗?如果是这样,非常感谢有人可以提供帮助。

1 个答案:

答案 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步。(或者是因为地球女孩很容易,生活中发现了一些混乱的理论吗?我不知道,这就是杰夫·戈德布鲁姆的全部。)