Pemja (Java 执行python教程)
环境配置
- python环境
/usr/local/lib/python3.8
- pip3 安装pemja
sudo pip3 install pemja --target=/usr/local/lib/python3.8/site-packages
依赖包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>pemja</artifactId>
<version>0.2.3</version>
</dependency>
代码测试
package com;
import org.junit.Test;
import pemja.core.PythonInterpreter;
import pemja.core.PythonInterpreterConfig;
import pemja.core.object.PyObject;
import java.util.HashMap;
public class Pemja2 {
private static PythonInterpreterConfig pythonInterpreterConfig;
static {
String path = "/Users/lizuchao/project/pemjarTest";
String pythonExec = "/usr/local/bin/python3.8";
pythonInterpreterConfig = PythonInterpreterConfig
.newBuilder()
// 设置python的环境路径
.setPythonExec(pythonExec)
// 设置python的执行路径
.addPythonPaths(path)
// 设置依赖路径
.addPythonPaths("/usr/local/lib/python3.8/site-packages")
.build();
}
@Test
public void testPemjaConfig() {
// 构建执行器
PythonInterpreter interpreter = new PythonInterpreter(pythonInterpreterConfig);
interpreter.set("a", 12345);
Integer a = interpreter.get("a", Integer.class);
assert a.equals(12345);
// 执行脚本内容
interpreter.exec("print(a)");
}
@Test
public void testPemjaFunc() {
PythonInterpreter interpreter = new PythonInterpreter(pythonInterpreterConfig);
// 要执行的文件
interpreter.exec("import funcs");
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
// 调用
Object result = interpreter.invoke("funcs.add", i, 2);
System.out.println(result);
}
long endTime = System.currentTimeMillis();
System.out.println("执行时间"+ (endTime - startTime));
}
}
funcs.py
def add(a, b=100):
return a + b