收藏
java调用python过程中解决python第三方库问题
Java对于简单python脚本还可以识别运行,但是一旦脚本有import第三方库,Java运行报错no module named 第三方库名。 下面介绍一种调用方式解决上述问题。 python 部分代码:
#encoding:utf-8 import numpy as np import pandas as pd import math import sys fileurl= sys.argv[1] # 接收第一个参数 point= sys.argv[2] # 接收第二个参数 #函数 str=coverpolygon(fileurl,point) print(str)
java调用代码:
public static void main(String[] args) throws IOException, InterruptedException { String fileurl="D:/route/高程点-350.csv"; String point="101.89405013,30.02698289,3301;102.14444407,29.56780298,3301;43.1,20.1,6301,1"; //通过原生方式调用,解决python文件引入第三方库的问题 //第一个参数默认是python,第二个参数python脚本路径,第三和第四个参数是python要接收的参数 String[] argg = new String[] { "python", "D:/route/cover_change.py", fileurl, point}; Process pr = Runtime.getRuntime().exec(argg); BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line; String result = ""; //接收返回结果 while ((line = in.readLine()) != null) { result += line; } System.out.println(result); in.close(); pr.waitFor(); }
执行java程序,返回结果截图:此方式调用解决了python第三方库的问题,但是java程序通过控制台接收python脚本接收返回结果,而不是以python脚本函数的return返回结果。如果python脚本中存在多个print,则返回结果会把所有print一起接收(注意!)。