2013-10-08 22 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

相关问题