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 = MySQLdb.connect(
        host="localhost",
        user="root",
        passwd="123456",
        charset='utf8',
        db="jianda")
    cur = db.cursor()
    print("success")
  1. Java代码
@Test
    public String pyfileUpload()   {
        String result = "";
        try {
        //这个方法是类似隐形开启了命令执行器,输入指令执行python脚本
            Process process = Runtime.getRuntime()
                    .exec("python解释器位置(这里一定要用python解释器所在位置不要用python这个指令)+ python脚本所在路径(一定绝对路径)");
            //这种方式获取返回值的方式是需要用python打印输出,然后java去获取命令行的输出,在java返回
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            result = input.readLine();//中文的话这里可能会有乱码,可以尝试转一下不过问题不大
//            result1 = new String(result.getBytes("iso8859-1"),"utf-8");
            input.close();
            ir.close();
            int re = process.waitFor();
            System.out.println(result);
        } catch (IOException | InterruptedException e) {
            System.out.println("调用python脚本并读取结果时出错:" + e.getMessage());
        }
        return result;
    }

浏览器返回结果
在这里插入图片描述
至此完全成功,真的搞吐血了

  • 19
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: SpringBoot 可以通过多种方式调用 Python 脚本,常用的方法有: 1. 通过 Java 调用 Python 脚本,可以使用 Java 自带的 ProcessBuilder 或第三方的库,例如 Apache Commons Exec。 2. 通过 REST API 调用 Python 脚本,可以在 Python 脚本开启 REST API,然后用 SpringBoot 发送 HTTP 请求调用。 3. 将 Python 脚本打包成服务,然后通过 API 调用服务。 选择具体的方法取决于您的需求和项目特点。 ### 回答2: Spring Boot 是一个非常流行的 Java 开发框架,可以快速构建 Web 应用程序。虽然 Spring Boot 本身可以实现许多功能,但是在某些情况下我们需要使用其他语言(如 Python)开发的库和工具。因此,Spring Boot 调用 Python 脚本是一种非常实用的技术,这种方法可以使得我们快速调用 Python 脚本,在 Spring Boot 应用实现各种功能。 实现 Spring Boot 调用 Python 脚本,需要用到一些工具和库,例如 Python 安装包、Python 脚本文件、Spring Boot 应用程序等。 首先,我们需要在 Spring Boot 应用程序集成 Python 解释器,我们可以使用 Jython 或者 Py4J 等库来实现这一目的。 使用 Jython 调用 Python 脚本,具体操作如下: 1. 下载 Jython 解释器,并将其添加到 Spring Boot 项目。 2. 编写 Java 代码调用 Python 脚本,在代码使用 jython.jar 解释 Python 脚本。 3. 在 Spring Boot 项目的 pom.xml 文件添加 Jython 依赖,同时将编写好的 Java 代码加入到 Spring Boot 应用程序。 另外,我们也可以使用 Py4J 实现 Spring Boot 调用 Python 脚本的需求,具体操作如下: 1. 下载 Py4J 库,并将其添加到 Spring Boot 项目。 2. 编写 Java 代码调用 Python 脚本,使用 Py4J 将 Python 脚本Java 程序进行交互。 3. 在 Spring Boot 项目的 pom.xml 文件添加 Py4J 依赖,同时将编写好的 Java 代码加入到 Spring Boot 应用程序。 总之,在应用程序使用 Python 脚本都是可行的,关键是根据具体的需求选择合适的库和工具。这样做可以提高开发效率,同时也能够提供更好的灵活性和可扩展性。 ### 回答3: 在使用Spring Boot调用Python脚本时,需要通过Java的ProcessBuilder类来创建一个进程来执行Python脚本。ProcessBuilder类可以配置该进程的相关属性,比如执行的命令、工作目录、环境变量等。在创建进程后,可以通过它的输出流、错误流等来获取Python脚本的输出结果和错误信息,并利用Java的IO流将结果返回给前端用户。 在实现Spring Boot调用Python脚本时,需要注意以下几个方面: 1. Python环境:在调用Python脚本前,需要确保Python环境已经配置好,Python解释器已经正确安装,并且Python的依赖库已经安装好。因此可以考虑使用Anaconda来管理Python的环境和依赖库,避免环境配置问题的影响。 2. 参数传递:在调用Python脚本时,需要将参数传递给Python脚本。可以考虑使用argparse库来解析命令行参数,从而实现参数传递。 3. 结果返回:在Python脚本执行结束后,需要将结果返回给Java程序。可以使用Java的IO流,读取Python脚本的输出流来获取执行结果,并通过ResponseEntity类来封装返回结果。 4. 异常处理:在调用Python脚本时,可能会发生一些脚本异常或者Python解释器异常,需要在Java程序进行异常处理,保证程序的正常运行以及异常信息的及时反馈。 综上所述,Spring Boot调用Python脚本需要关注Python环境、参数传递、结果返回以及异常处理等方面,同时需要注重程序的安全性和性能,确保程序的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值