gpt4 book ai didi

Mac OSX 上的 Java ProcessBuilder 看不到 Python 3

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:11 25 4
gpt4 key购买 nike

我正在尝试使用 ProcessBuilder 从 Java 运行 Python 脚本。该脚本至少需要 Python 3。我这样调用它:

// the -u is for unbuffered output
String[] pythonCommand = {"python", "-u", "script.py"};
ProcessBuilder ps = new ProcessBuilder(pythonCommand);
Process pr = pb.start();

它在 Windows 上工作得很好,当我定义 script.py 用 sys.version_info 打印出 Python 版本时,它告诉我我正在运行 Python 3.6.2

但是,在我 friend 的 Macbook 上,该脚本不起作用,并且 sys.version_info 显示 Python 2.7.1。她使用 homebrew 通过 brew install python3 安装了 Python 3。当她从终端运行 python3 scriptname.py 时,它在 Python 3.6.2 上运行,但 python scriptname.py 从终端在 Python 2.7.1 上运行。

因此,我想我可以将 Java ProcessBuilder 命令更改为

String[] pythonCommand = {"python3", "-u", "script.py"}; // python3

如果操作系统名称不是以 Windows 开头,但该命令在 Mac OS 上的 Java 进程构建器中不起作用 - 它会抛出

java.io.IOException: Cannot run program "python3": error=2, No such file or directory

我认为这是 ProcessBuilder 用于运行 Python 的路径的问题,这听起来正确吗?也许我需要尝试使用 virtualenv 在 Mac 上运行 Python 3,但我不知道该怎么做。或者,它可能是完全不同的东西吗?

最佳答案

Homebrew 并不总是将实际的 python3 可执行文件链接到 PATH 中的目录。您应该使用终端检查这一点。

在我的 MacBook 上,python3 链接在 /usr/local/bin/python3

xvolks@localhost ~> ls -l /usr/local/bin/python3
lrwxr-xr-x 1 xvolks admin 35 19 aoû 00:02 /usr/local/bin/python3 -> ../Cellar/python3/3.6.2/bin/python3

如果链接丢失,您可以使用命令brew link python3创建它。

关于Mac OSX 上的 Java ProcessBuilder 看不到 Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com