java调python脚本(找累了吧还没解决,不妨看看这里吧)

本文档展示了Java通过Runtime执行Python脚本的代码实例,并探讨了遇到的脚本数据返回为空的问题,指出可能是Python依赖未完整安装。Python脚本中引用了多个库,包括pandas、numpy和fbprophet等。解决方案建议检查和确保所有依赖已正确安装。
摘要由CSDN通过智能技术生成

前言

接到的开发任务中涉及调取python脚本并执行,关于java调取Python脚本有好几种方法,大家可以自行百度,重点粘贴下我的代码(使用的是java的Runtime)与及说下我遇到的问题。

代码

 private LinkedHashMap<String, String> runtimePython(String id, String type) throws IOException, InterruptedException {
        LinkedHashMap<String, String> map = new LinkedHashMap();
        //调用python脚本 获取预测趋势
        Process proc;
        String abPath = System.getProperty("catalina.home");
        char a = File.separatorChar;
        String phantomjsPath = abPath + a + "webapps" + a + "archetype-ui-istorm" + a + "phantomjs";
       
        String pythonPath = null;
        if (type.equals("pool")) {
            pythonPath = phantomjsPath + a + "python" + a + pythonPool;
        } else {
            pythonPath = phantomjsPath + a + "python" + a + pythonVolume;
        }
       
        String[] args = new String[]{python, pythonPath, id};
        proc = Runtime.getRuntime().exec(args);
        BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), "GBK"));
        String line = null;
        while ((line = in.readLine()) != null) {
            if (line.contains("[{")) {
                System.out.println(line);
                line = line.replaceAll("'", "\"");
                List<JSONObject> linkedHashMap = JSON.parseArray(line, JSONObject.class);
                LOGGER.info("python返回数据", linkedHashMap);
                linkedHashMap.forEach(forecast -> {
                    map.put(forecast.getString("time"), forecast.getString("forecast"));
                });
            }
        }
        in.close();
        proc.waitFor();
        return map;
    }

补充说明:python、pythonPool和pythonVolume都是配置文件获取的值,其中第一个是python运行的环境,后两者都是脚本的名称。(对于该代码,有优化建议的也可提出,这是初版代码)

遇到的问题

问题一:获取脚本数据为Null

网上找了很多方法,我基本上都尝试了,包括按照一些依赖之类的,都无果。这个坑真是让人头皮发麻。
针对这个问题,给大家总结的一句话就是,多半是脚本需要的依赖,你没有安装全,但是直接一句话告诉你:那就安装呗,好像又有点不太负责!,谁都知道安装呗,但也不是这么好安装的。
请添加图片描述
下面展示下python脚本引入的依赖:

import os
import sys
import pandas as pd
import numpy as np
import math
from fbprophet import Prophet
import json
from pandas import DataFrame
# from utils.CommonUtils import CommonUtils
from datetime import timedelta
import datetime
import time
from collections import OrderedDict
import matplotlib.pyplot as plt
import itertools
import pymysql
import pytz
import importlib
importlib.reload(sys)

import warnings
warnings.filterwarnings("ignore")

然后展示下我认为最难安装的两个包,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值