2013-10-08 44 views
1

我嘗試使用運行在Java程序中一個Python腳本:爲什麼我在從java執行系統調用時應該安裝的python中缺少一個模塊?

DefaultExecutor executor = new DefaultExecutor(); 
String s = "python -c \"import argparse; print argparse\"" 
executor.execute(s); 

,但得到的錯誤消息:

"import argparse ImportError: No module named argparse\n"

這個Python模塊將自動安裝在Python 2.7+

當我剛剛從終端運行它時,該命令正常工作:

$python -v 
Python 2.7.1 
$python -c "import argparse; print argparse" 
<module 'argparse' from '/usr/local/lib/python2.7/argparse.pyc'> 

它爲什麼不從java程序工作?是DefaultExecutor使用不同的機器?

+0

python的verison是Java運行的嗎?它是不同的版本,或其他env vars設置不同? –

+0

我該如何檢查? – Popcorn

+0

好的問題解決了,問題是我試圖以root用戶身份運行java程序 – Popcorn

回答

1

嘗試使您的DefaultExecutor運行"python -v",看看它是否給你任何提示。也許Java使用錯誤版本的python出於某種原因被發現。

,或試着運行:

DefaultExecutor executor = new DefaultExecutor(); 
String s = "python \"import sys; print sys.executable\"" 
executor.execute(s); 

這可能讓你看到的Java使用哪個版本的Python。

+0

您是否發現問題? – Discmt

+0

是的,問題是我試圖以root用戶身份運行java程序。當我切換到另一個用戶時,它工作正常。 – Popcorn

相關問題