脚本在终端中工作,但在使用ProcessBuilder运行时则不行

时间:2014-02-07 14:59:58

标签: java python bash 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行,in     “(或者将sasa-tool目录添加到PYTHONPATH,即导出PYTHONPATH =)?”) ImportError:您是否尝试运行'。 setup.env“? (或将sasa-tool目录添加到PYTHONPATH,即导出PYTHONPATH =)?

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

所以基本上我只是想知道Process builder的不同之处,以便在运行命令之前导出无法找到PYTHONPATH以及如何解决此问题。感谢。

2 个答案:

答案 0 :(得分:1)

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

source /Users/me/.bashrc

答案 1 :(得分:0)

尝试将程序实际构建为exe jar并从终端运行它。然后一切都应该共享相同的env变量。