![](/img/trans.png)
[英]Calling Python script from Java code using Runtime.exec() : ImportError: No module named sklearn
[英]Python ImportError when calling Python script from Java
首先,有一個類似的問題在這里是不是曾經真正解決。
我有一個要從Java代碼中執行的Python腳本。 當我自己運行Python腳本時,它可以正常工作。 當我嘗試從Java 進程執行它時,出現了ImportError:
Traceback (most recent call last):
File "address_to_geocode.py", line 3, in <module>
from omgeo import Geocoder
ImportError: No module named omgeo
根據鏈接問題的建議,我在Python導入部分中為模塊添加了直接路徑,以確保解釋器知道在哪里查看,但仍然無法正常工作:
import sys, os
sys.path.append('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/omgeo')
from omgeo import Geocoder
我的下一個步驟是從bash腳本調用python腳本(同樣,它可以獨立工作),但是當我從Java調用bash腳本時,同樣的錯誤仍然存在。 因此,問題似乎就在Java的末端。 這是我的Java代碼:
Process p = runner.exec("python address_to_geocode.py");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String stdReader = null;
//Read output of command:
while((stdReader = stdInput.readLine())!=null) {
System.out.println(stdReader);
}
//Read any command errors:
while((stdReader = stdError.readLine())!=null) {
System.out.println(stdReader);
}
p.waitFor();
我的Java代碼有什么問題嗎?或者這是一個bug? 我感謝任何指示。
我解決了 看起來ProcessBuilder
不僅需要python文件本身的完整路徑,還需要python的完整路徑:
ProcessBuilder("/Library/Frameworks/Python.framework/Versions/2.7/bin/python",absolute_file_path);
這樣就解決了問題。
$ cat ~/.bash_profile
Java代碼
ProcessBuilder pb = new ProcessBuilder("/Users/micklin/anaconda2/bin/python","sentiment.py",done.toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.