繁体   English   中英

Java调用错误的python版本

[英]Java calls wrong python version

我正在尝试使用Process和ProcessBuilder从Java程序运行Python脚本,但是Java一直在使用错误版本的Python。 (该脚本需要3.6.3才能运行,Java运行Python 2.7)

但是,当我从终端(Java之外)运行脚本时,它运行正确的Python(3.6.3)。 如何更改Java调用时运行的Python版本?

简短版本是随PATH环境变量而变化的。

在Windows下, Technet有答案。 向下滚动到“命令搜索序列”部分。 这个答案解释得很好。

对于类UNIX操作系统, 这个答案非常详细。

有两个非常有用的命令可用于确定将调用哪个可执行文件: which适用于UNIX, where适用于较新的Windows。

Java和终端之间差异的最可能原因是你的PATH有所不同。 也许您的Java版本正在使用修改后的PATH运行? 某种启动脚本可能正在改变它。

/usr/bin/python3.4添加到命令的开头以强制使用所需的python版本。 如果您不确定python的安装位置,请继续使用whereis python并查看您获得的内容。

private int executeScript(final List<String> command) {
    try {
        final ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/python3.4").command(command);
        processBuilder.redirectErrorStream(true);

        System.out.println("executing: " + processBuilder.command().toString());

        final Process process = processBuilder.start();
        final InputStream inputStream = process.getInputStream();
        final InputStream errorStream = process.getErrorStream();

        readStream(inputStream);
        readStream(errorStream);

        return process.waitFor();

    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    return -1;
}

然后只需传入包含python命令的List

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM