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模塊的簡單介紹到這就結束了,后面項目里面用到更深入的,我再更新。
