Jep 初体验

本贴最后更新于 1884 天前,其中的信息可能已经沧海桑田

背景

Jep 是一个在 Java 中调用 Python 的库,原理是通过 JNI 来调用 CPython。

Jep 支持 python 2.7, 3.3 - 3.7。

噢,为什么没有尝试下 Jython? 因为我这边需要用 Python3.x,目前 Jython 仅支持到 python 2.7.1。

初体验

编译 Python

需要也生成 .so 文件,故加上 --shared 参数

./configure --shared

需要编译时加上参数 -fPIC,故编辑 Makefile 文件,修改为

CC=             gcc -pthread -fPIC
CXX=            g++ -pthread -fPIC

然后编译,安装

make
sudo make install

安装 jep

/usr/local/bin/pip3 install jep

代码

pom.xml

pom.xml

  <dependencies>
    <dependency>
      <groupId>black.ninia</groupId>
      <artifactId>jep</artifactId>
      <version>3.8.2</version>
    </dependency>
  </dependencies>

MainJep.java

package testJep;

import jep.Jep;
import jep.JepException;

public class MainJep {
  public static void main(String[] args) throws JepException {
    try (Jep jep = new Jep()) {
      jep.eval("from java.lang import System");
      jep.eval("s = 'Hello World'");
      jep.eval("System.out.println(s)");
      jep.eval("print(s)");
      jep.eval("print(s[1:-1])");
      
      jep.eval("import sys");
      jep.eval("sys.version_info");
    }
  }
}

运行

java -jar testJep-0.0.1-SNAPSHOT/testJep-0.0.1-SNAPSHOT.jar
Hello World
Hello World
ello Worl
sys.version_info(major=3, minor=7, micro=0, releaselevel='final', serial=0)

参考

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    534 引用 • 671 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...