首页 > 编程语言 >java中使用jep调用python类

java中使用jep调用python类

时间:2023-05-21 18:34:49浏览次数:35  
标签:jep 调用 java exec python interp

经过调研,目前这应该只有一种调用方式了,那就是使用jep,后来亲测了以下确实是可行,我是使用jep调用了一个python文件中的类,并测试了类的一个方法,可以正常执行,但是具体速度会不会慢很多,我还没有测试。

刚开始在调研的时候,说jython也可以调用,但是这个包只支持2.7python,毕竟现在很少有用2.7的了,所以转2.7就比较麻烦,甚至有可能无法实现。

关于jep的使用,首先需要强调的是,jep是使用pip安装的,我刚开始在想java使用为什么要使用pip安装(pip install jep ),https://github.com/ninia/jep,原来这种安装方式会创建python包,和java的jar包,在两个语言中都可以互相调用。

关于jep的安装需要gcc,java,要配置好JAVA_HOME

安装好jep以后,调用方式为:

import jep.*;
public class test_2 {
    public static void main(String[] args) {
    try (Interpreter interp = new SharedInterpreter()) {
        interp.exec("from java.lang import System");
        interp.exec("s = 'Hello World'");
        interp.exec("System.out.println(s)");
        interp.exec("print(s)");
        interp.exec("print(s[1:-1])");
    } catch (Exception e) {
        e.printStackTrace();
    }
     }       
}
//注意,exec中可以直接按照python的代码来写就行了,另外还有别的写法,官方还给出了其他的类调用方法,可以自行尝试,在这里https://github.com/ninia/jep/wiki/Getting-Started

最后将上述代码保存为test_2.java

编译:javac -cp jep-版本号.jar的绝地地址 test_2.java

执行 :java -cp  jep-版本号.jar的绝地地址:. test_2

上述执行命令中,以我的jep.jar绝对地址为例,我的是在/usr/local/lib64/python3.6/site-packages/jep-4.1.1-py3.6-linux-x86_64.egg/jep/jep-4.1.1.jar

标签:jep,调用,java,exec,python,interp
From: https://www.cnblogs.com/chentiao/p/17418959.html

相关文章

  • Day 41 41.1 Python中json模块的loadloads方法实战及参数详解
    Python中json模块的load/loads方法实战及参数详解【一】loads方法与load方法的异同在Python中json是一个非常常用的模块,这个主要有4个方法:json.dumpsjson.dumpjson.loadsjson.load这里主要分析讲解一下json的loads和load方法。这两个方法中都是把其他类型......
  • Day 41 41.2 Python中json模块之dumps参数详解
    Python的JSON用法之dumps的各种参数用法(详细)JSON是用于存储和交换数据的语法。JSON(JavaScriptObjectNotation)最初是用JavaScript对象表示法编写的文本,但随后成为了一种常见格式,被包括Python在内的众多语言采用。在使用json方法的时候要记住先引进这个库importjson......
  • IDEA——Java的一些依赖
    <!--导入knife4j的maven坐标(Swagger框架)--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</ve......
  • Python 设计模式-观察者模式
    观察者模式是一种行为设计模式,它允许你定义一种订阅机制,可以在对象事件发生时通知多个观察者对象。下面是一个简单的Python观察者模式代码示例:classSubject:"""被观察者类,维护观察者列表,并在状态发生改变时通知观察者"""def__init__(self):self._......
  • 【python】使用pyinstaller打包python程序为exe【转】
    pyinstaller介绍PyInstaller除了win32平台外还支持Linux,Unix平台.py2exe的用法在前面的博文里已经有了,现在看看PyInstaller,pyinstaller是目前应用最多的python打包工具,也是我最常用的。PyInstaller本身并不是Python模块,所以安装时随便放在哪儿都行。优点:可将python文件转......
  • 5年Python生涯总结出10个玩Python必备的网站
    “玩Python必备的10大精品网站”5年Python沉淀,总结一下作为一个Python玩家,必须要知道的十大精品网站。无用请吐槽!有用请点赞!!爱我请三连!!!目录一、模块查询二、闯关游戏三、Django教程四、Python资源大全五、数据/竞赛/学习六、Python语法/项目经验七、Flask资料大全八、机器学习中文......
  • Python数据加密方法详解|为你的隐私再上一把锁!
    前言数字化时代下,数据安全是各大公司及个人最关心的一点,作为一个Python语言使用者我们该如何进行数据的加密呢?本文二哥领着大家来了解一下。目录前言一、数据加密的概念二、直接编码加密三、Binascii编码加密三、Base64编码加密四、URL编码加密五、Hashlib加密1、MD52、SHA1加密六......
  • 左程云动态规划问题学习(python版本重写)
    哔哩哔哩:6.二次优化(3)_哔哩哔哩_bilibili第一个版本对动态规划的理解#问题有大量的重复问题,比如求feibolaqie(5)=feibolaqie(4)+feibolaqie(3),#所以有重复问题,通过缓存优化,把以前求过的问题做缓存#deffeibolaqie(n):#ifn==1:#return1#eli......
  • python爬取《肖申克的救赎》电影演员
    importrequestsfrombs4importBeautifulSoup#豆瓣电影页面链接url='https://movie.douban.com/subject/1292052/'#设置请求头信息,模拟浏览器请求headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,lik......
  • python-docx - 3
    1.样式1.1访问样式使用Document.styles属性访问样式。fromdocximportDocumentdocument=Document()#获取样式对象,这里面可以像字典一样访问,也可以迭代styles=document.stylesforstyleinstyles:print(style.name,"\t",style.type)#获取一个正文样式......