首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java调用错误的python版本

Java调用错误的python版本
EN

Stack Overflow用户
提问于 2018-08-13 08:26:56
回答 2查看 211关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-13 08:37:22

简而言之,它随您的PATH环境变量而变化。

在Windows下,Technet可以回答这个问题。向下滚动到“命令搜索序列”部分。This answer很好地解释了这一点。

对于类UNIX操作系统,this answer是非常详细的。

有两个非常有用的命令来决定调用哪个可执行文件:which用于UNIX-like和where用于较新的Windows。

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

票数 3
EN

Stack Overflow用户

发布于 2018-08-13 08:37:34

/usr/bin/python3.4添加到命令的开头,以强制使用所需的python版本。如果您不确定python的安装位置,可以尝试使用whereis python,看看会得到什么结果。

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51813909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档