gpt4 book ai didi

java - 脚本在终端中有效,但在使用 ProcessBuilder 运行时无效

转载 作者:行者123 更新时间:2023-12-01 13:29:54 24 4
gpt4 key购买 nike

我正在尝试使用 ProcessBuilder 运行脚本

当我在脚本中导出到 $PYTHONPATH 以允许我将 echo 命令通过管道传输到如下所示的 python 文件时,就会出现问题:

进程构建器:

ProcessBuilder builder = new ProcessBuilder("sh", "sasa_script.sh");
builder.redirectErrorStream(true);
builder.directory(new File("/Users/me/script_location"));
Process process = builder.start();

sasa_script.sh:

#!/bin/bash
cd /Users/me/dir_for_tool/
export PYTHONPATH=$PYTHONPATH:/Users/me/dir_for_tool/dir_containing_init.py/
echo $PYTHONPATH
echo -e"This is a sample echo." | python ./bin/classifyFromCmdLine.py

该脚本在 mac 终端中完美运行,但在使用 ProcessBuilder 运行时会导致错误,要求您运行安装程序或设置 PYTHONPATH(不是 processBuilder 的错误,而是脚本的错误)

回溯(最近一次调用最后一次): 文件“./bin/classifyFromCmdLine.py”,第 22 行,位于 “(或者将 sasa-tool 目录添加到 PYTHONPATH,即导出 PYTHONPATH=)?”)导入错误:您是否尝试运行 '. setup.env'?(或者将sasa-tool目录添加到PYTHONPATH,即export PYTHONPATH=)?

我还回应了 PYTHONPATH,它表明在该命令之后设置了正确的路径。

所以基本上我只是想知道进程构建器有什么不同的做法,以便在运行命令之前导出无法找到 PYTHONPATH 以及如何解决此问题。谢谢。

最佳答案

当您登录到 shell 时,您的 $PYTHONPATH 环境变量会以某种方式设置(可能通过 .bashrc 或类似的配置文件配置)。当您运行 ProcessBuilder 时,不会设置此环境变量。您可以将 PYTHONPATH 硬编码到脚本中,也可以尝试使用 source 导入配置并设置变量:

source /Users/me/.bashrc

关于java - 脚本在终端中有效,但在使用 ProcessBuilder 运行时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630945/

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