Jython的简单使用

Posted 耳语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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模块的简单介绍到这就结束了,后面项目里面用到更深入的,我再更新。

 

以上是关于Jython的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Jython的应用

Java调用Python程序

使用 Jython 从 Java 代码调用 Python 导致错误:ImportError: no module named nltk

Pydev 显示用于 Jython 代码分析的“未定义变量”

在我编写的java代码中,需要用到python语言编写的文件,需要怎样使用。

在 jython 中导入 python 模块