【问题标题】:Why am I missing a module in python that should be installed when I do system calls from java?为什么我在从 java 进行系统调用时缺少应该安装的 python 模块?
【发布时间】:2013-10-16 01:26:01
【问题描述】:

我正在尝试使用以下方法在 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 使用的是不同的机器吗?

【问题讨论】:

  • Java 运行的是什么版本的python?是版本不同,还是其他环境变量设置不同?
  • 我该如何检查?
  • 好的问题解决了,问题是我试图以root用户身份运行java程序

标签: java python command-line argparse


【解决方案1】:

尝试让您的 DefaultExecutor 运行 "python -v" 并查看它是否给您任何提示。也许Java出于某种原因使用了错误的python版本。

或者尝试运行:

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

这可能让您查看正在使用的 python Java 版本。

【讨论】:

  • 找到问题了吗?
  • 是的,问题是我试图以 root 用户身份运行 java 程序。当我切换到另一个用户时,它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2011-09-19
  • 2015-05-09
相关资源
最近更新 更多