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();