[英]Windows REG command not working when executed from ProcessBuilder in Java
[英]Command executed from terminal, failed from Java using ProcessBuilder
我正在嘗試在終端中執行命令。 問題是,當我在終端中執行命令時,它成功了,但是當我從java運行命令時,命令被執行但是,我收到一條錯誤消息,顯示我缺少一些python模塊。
try{
String[] list = { "python3", "script.py" };
ProcessBuilder pb = new ProcessBuilder(list);
pb.directory(
new File("/home/script"));
System.out.println("" + pb.directory());
Process process = pb.start();
InputStream str = process.getErrorStream();
InputStreamReader isr = new InputStreamReader(str);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:", Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);}
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String ret = in.readLine();
System.out.println("value is : "+ret);
process.waitFor();
process.destroy();
}catch (Exception ex) {
ex.printStackTrace();
}
錯誤消息:
/home/script
Output of running [] is:Traceback (most recent call last):
File "scraper.py", line 8, in <module>
from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'
value is : null
PS:當我直接從終端執行命令時,一切正常,我沒有得到丟失的模塊錯誤。
與Java類似,python允許導入其他東西。 該消息告訴您,您的python腳本想要使用模塊selenium
,但無法找到它。
在shell /控制台中手動運行命令時,很可能會有一些特殊的ENV var設置。 因此,請檢查.bashrc或.initrc或其他定義ENV變量的內容。 在unix系統上,鍵入命令env
也可能會顯示所有設置。 只需檢查是否設置了env var PYTHONPATH。
由於該調用是從命令行進行的,因此可以肯定,該模塊已安裝在您的系統上。 您唯一的問題是當您通過Java ProcessBuilder調用該腳本時,python無法找到它!
一種解決方案可能是您在腳本中“手動”調整PYTHONPATH。 因此:為PYTHONPATH設置正確的設置,然后將腳本更新為“做正確的事情”。
有關更多詳細信息,請參閱python 文檔 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.