繁体   English   中英

脚本在终端中有效,但在使用ProcessBuilder运行时不起作用

[英]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.

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