Java(springboot)调⽤python脚本(包含调⽤第三⽅库的脚本)
真的是被搞吐⾎了,java调⽤python、
之所以被卡很久才解决,⾸先你需要把你的python脚本在windows命令⾏
执⾏⼀次如果成功再做后⾯的操作
如果不成功报错显⽰(第三⽅库没到,具体代码是什么no module not found)
出现这⼀步,你需要在命令⾏输⼊⼀下代码
(需要注意的是,python脚本和java调⽤的地⽅必须全部使⽤绝对路径)
pip list
查看是否有包,如果有,到那个包所在的⽂件夹
输⼊以下的代码
python//回车
import sys//回车
sys.path//然后查看你⾃⼰库所在的⽬录是否在这些⽬录中
这些⽬录是python⾃动包的地⽅
如果不存在,你需要在系统的环境变量⾥的系统变量那⾥添加
PYTHONPATH变量然后把你包所在的⽂件夹⽬录拷进去(类似配置java环境变量)
重复以上步骤看是否有这个⽬录
然后再⽤命令⾏执⾏脚本看是否能执⾏
成功执⾏以后尝试java调⽤执⾏
1. python代码(调⽤了第三⽅操作mysql的库)
import MySQLdb
if __name__ =='__main__':
db = t(
host="localhost",
user="root",
passwd="123456",
charset='utf8',
db="jianda")
cur = db.cursor()
print("success")
2. Java代码
@Test
public String pyfileUpload(){
String result ="";
try{
//这个⽅法是类似隐形开启了命令执⾏器,输⼊指令执⾏python脚本
Process process = Runtime()
.exec("python解释器位置(这⾥⼀定要⽤python解释器所在位置不要⽤python这个指令)+ python脚本所在路径(⼀定绝对路径)");
//这种⽅式获取返回值的⽅式是需要⽤python打印输出,然后java去获取命令⾏的输出,在java返回
InputStreamReader ir =new InputStream());
LineNumberReader input =new LineNumberReader(ir);
result = adLine();//中⽂的话这⾥可能会有乱码,可以尝试转⼀下不过问题不⼤
// result1 = new Bytes("iso8859-1"),"utf-8");
input.close();
ir.close();
python转java代码int re = process.waitFor();
System.out.println(result);
}catch(IOException | InterruptedException e){
System.out.println("调⽤python脚本并读取结果时出错:"+ e.getMessage());
}
return result;
}
浏览器返回结果
⾄此完全成功,真的搞吐⾎了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论