[英]VirtualEnv Python as Java PythonInterpreter in MacOS
我目前正在寻找一种通过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
,这是jython python解释器的版本。
但是我所有的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解释器运行脚本,并使用管道捕获其输出。
第3步:没有第3步。(或者是因为地球女孩很容易,某种生活发现了混乱的理论吗?我不知道,这就是杰夫·戈德布鲁姆的全部。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.