我有一个用C-igraph(库的名称)编写的图库的Python接口。我的需求是从Java代码调用与此图库有关的python模块。它是这样的,图书馆的核心在于c。这个核心已经被导入到Python中,并且嵌入在核心中的函数的接口在Python中可用。我的项目的其余代码是用Java编写的,因此我想用Java调用图形函数。 Jython - 允许您在Java中调用python模块是一个选项。我继续尝试使用Jython发现它在我的情况下不起作用,因为核心代码在C和Jython中不会支持任何导入为ac dll的内容python代码。我也考虑过直接在c中调用图例程的方法。这是没有通过Python代码。我假设必须有一些东西可以让你从Java调用C代码,但是我在C中并不擅长,因此我没有去做。 我最后的手段似乎是从命令行使用Java执行Python解释器。但这是一个肮脏无耻的行为。同样为了处理Python代码产生的结果,我将不得不将结果写入一个文件并以java读回。又脏又臭的样子。 有没有人可以建议我?感谢每一个给予时间。从Java调用Python模块
非常感谢Igal的回答。我看了一下。乍一看,它看起来好像只是简单地调用python脚本。
Jep jep = new Jep(false, SCRIPT_PATH, cl);
jep.set("query", query);
jep.runScript(SCRIPT_PATH + file);
jep.close();
与我们通过Java代码从命令行调用python解释器时所做的非常相似。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("python test.py");
问题是我该如何使用Python脚本生成的结果。天真的方法是将它们写入文件并用Java读回。我正在寻找更聪明的方法。无论如何感谢您的建议。