簡體   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