我正在尝试使用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以及如何解决此问题。感谢。
答案 0 :(得分:1)
当您登录shell时,您的$ PYTHONPATH环境变量会以某种方式设置(可能通过.bashrc或类似的配置文件配置)。运行ProcessBuilder时,不会设置此环境变量。您可以将PYTHONPATH硬编码到脚本中,也可以尝试使用 source 导入配置并设置变量:
source /Users/me/.bashrc
答案 1 :(得分:0)
尝试将程序实际构建为exe jar并从终端运行它。然后一切都应该共享相同的env变量。