Jython的简单使用

Jython的简单使用

 

这段时间要做一个毕业设计,主要设计到图片识别的东西,但是机器学习那一块是用CAFFE的python接口做的,然后Web和APP使用Java语言开发的,所有开发的应用项目(网站和移动客户端)需要调用图片识别的python脚本,后来查查资料,使用Jython可以满足在Java中执行python脚本。

 

测试环境:

  • Eclipse
  • 1.8的JDK
  • Jython版本2.5.2(只要jar包就行了)

 

这里默认大家已经安装了Eclipse和JDK,JDK不是1.8的也可以,使用平时开发用的JDK就可以了,至于jython.jar需要到官网去下载

 

1.建立一个java project,然后将jython.jar文件放到目录下,然后选择Build Path,将jython.jar Add to Build Path这样 就能使用jython的API了

 

2.在上面的图片中,已经显示了我的project的目录,其中src主要放测试代码,lib放jar包,images里面可以放一下后期要用到的图片,pythonfile里面存放python脚本

 

3.建立相关文件后

其中my_utils.py中,我就简单的放了一个函数,主要是演示一下,java调用python文件的方法;Test.java里面是java的测试函数入口

先展示一下my_utils.py中的代码:

#coding:utf-8

#do not have chinese

def adder(a, b):  
    return a + b

if __name__ == '__main__':
  print(adder(2, 10))

 

4.下面介绍两种调用方法:

(1)在Java文件中调用本机python脚本中的函数

  Test.java:

1 //调用python文件中的函数,进行两个数求和运算
2 PythonInterpreter interpreter = new PythonInterpreter();  
3 interpreter.execfile("./pythonfile/my_utils.py");  
4 PyFunction func =     (PyFunction)interpreter.get("adder",PyFunction.class);  
5 int a = 10, b = 2 ;  
6 PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));  
7 System.out.println("anwser = " + pyobj.toString());  

 

 
 

(2)在Java文件中直接执行python脚本

  Test.java:

1 //直接运行python脚本
2 PythonInterpreter interpreter = new PythonInterpreter();
3 
4 //执行python py文件 
5 interpreter.execfile("pythonfile/my_utils.py");   

两次的结果都是12,区别 是:方法一调用函数,需要传递参数,大家可以注意一下,在Java文件中参数的传递方法,这算是Jython的一个特点吧;第二种方法直接运行脚本,在Python中将文件作为脚本运行可以加上if __name__ == '__main__'来判断,如果是作为脚本运行,就会执行if里面的代码,在这里就是调用一下函数,并打印结果。

 

备注:其实还可以直接在Java中执行python语句,不过我感觉这种实用性不是很大,从封装代码的角度来考虑,基本上不会用这种方法,大家了解就好。

 

关于如何在Java中调用Python模块的简单介绍到这就结束了,后面项目里面用到更深入的,我再更新。

 

转载于:https://www.cnblogs.com/yogie/p/jython_programming.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值