[英]Script works in terminal but not when ran using ProcessBuilder
我正在尝试使用ProcessBuilder运行脚本
当我在脚本中导出到$ PYTHONPATH以允许我将echo命令通过管道传递到如下所示的python文件中时,就会出现问题:
的ProcessBuilder:
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,即export PYTHONPATH =)?”)ImportError:您是否尝试运行”。 setup.env“? (或将sasa-tool目录添加到PYTHONPATH,即导出PYTHONPATH =)?
我也在回显PYTHONPATH,它显示在该命令之后设置了正确的路径。
因此,基本上,我只是想知道什么是Process builder,以便在运行命令之前导出无法找到PYTHONPATH以及如何解决此问题。 谢谢。
登录到shell时,$ PYTHONPATH环境变量将以某种方式设置(可能通过.bashrc或类似的配置文件配置)。 运行ProcessBuilder时,未设置此环境变量。 您可以将PYTHONPATH硬编码到脚本中,也可以尝试使用source导入配置并设置变量:
source /Users/me/.bashrc
尝试将程序实际构建为exe jar,然后从终端运行它。 然后,所有内容都应共享相同的env变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.