在Java工程中調用Python代碼

Python是一門好用的腳本語言,底層基於C實現,快速且簡單。使用python能夠說是站在巨人肩膀上編程,使得程序員更專一於業務及邏輯,而不是被人學爛的語言工具。可是團隊合做時候,就會有一些多語言編程,而後集成的問題,例如我遇到的Java和Python。爲了方便非Python程序員可以使用寫好的python程序,須要考慮兩個方面: 
- 環境是否可遷移,在沒有python環境的機器上如何運行。 
- Java如何實現與python的交互。html

環境遷移 
方案一 
(1) 安裝python環境,寫入path路徑 
(2) 保證pip能夠正常使用,cmd切換到路徑下:c:/Python27/Scripts>pip 
(3) pip install -r requirement.txt 
site-packages裏面放的是第三方包。包能夠經過import 引入程序中。 所以,須要提早寫好requirement.txt文件,包含一堆依賴 
 
方案二 
將python打包成exe,能夠在無python環境的windows環境下運行python代碼。有兩個工具可供使用: 
Py2exe: 
python2.7 對應0.6.9版本的py2exe,須要另外建立setup.py,且不支持win64. 具體見:python打包程序py2exe實戰 
PyInstaller: 
推薦使用, 
(1)首先安裝:pip install pyinstaller 
(2)開始打包成exe 
- 命令提示符cd 到須要打包的文件的目錄 
- 直接在命令提示符中輸入pyinstaller -F 文件名.py 注意F要大些,呵呵就這麼簡單 
- 打包成功後會出現兩個文件夾,其中一個就是所須要的exe文件; 
注:如果gui文件能夠在輸入pyinstaller -F -w文件名.py 其中w是小寫,意思就是五命令行窗口,默認的是-c有命令行窗口,固然通常的文件也能夠-w,這樣命令行窗口就沒有了。 
pyinstaller 的其餘經常使用的參數 
- 「- -icon=圖標路徑」 
- 「-F 打包成一個exe文件」 
- 「-w 使用窗口,無控制檯」 
- 「-c 使用控制檯,無窗口」 
- 「-D 建立一個目錄,裏面包含exe以及其餘一些依賴性文件 還有一些能夠經過pyinstaller -h 來查看參數」 
例如: 
C:\Users\Desktop\exe>pyinstaller -F c:/helloworld.py 
exe存放地址> pyinstaller -F 目標文件java

Java如何實現與python的交互。 
解決:文件讀寫。Java輸出的數據,交給python讀取並處理。python輸出處理結果到文件,Java讀取並進行後續工做。 
Java中運行python腳本的三種方式 
(1) 直接執行Python腳本代碼 
引用 org.python包python

PythonInterpreter interpreter = new PythonInterpreter();  
interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");   ///執行python腳本

(2) 執行python .py文件程序員

PythonInterpreter interpreter = new PythonInterpreter();  
InputStream filepy = new FileInputStream("D:\\demo.py"); 
interpreter.execfile(filepy);  ///執行python py文件
filepy.close();

(3)使用Runtime.getRuntime()執行腳本文件 
這種方式和.net下面調用cmd執行命令的方式相似。若是執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No module named arcpy。編程

Process proc = Runtime.getRuntime().exec("python  D:\\demo.py");  
proc.waitFor();
相關文章
相關標籤/搜索