【问题标题】:Running bash/python script with ProcessBuilder使用 ProcessBuilder 运行 bash/python 脚本
【发布时间】:2019-06-13 22:18:32
【问题描述】:

我想使用 ProcessBuilder 运行 bash 脚本。这是我的 xtend 代码:

new ProcessBuilder().inheritIO().command("/bin/bash", "-c", "./myscript.sh")

这是我的 bash 脚本:

#!/bin/bash
python WebRoot/result.py

还有python代码:

#! /usr/bin/env python
import rospy
from std_msgs.msg import Empty
...

问题是我得到一个错误:

Traceback (most recent call last):
  File "WebRoot/result.py", line 2, in <module>
    import rospy
ImportError: No module named rospy

但是,当我通过终端手动运行代码时,它工作正常。

【问题讨论】:

  • 也许你需要这样做:import roslib; roslib.load_manifest('your_package_name')。按照这里:wiki.ros.org/rospy/Troubleshooting
  • 这个'import roslib...'去哪儿了?
  • 也许你没有从同一个终端运行这两个?检查你是否有例如PYTHONPATH 设置在一个上下文中而不是另一个上下文中,或者如果一个引用了不同的 Python 安装
  • 我通过 Eclipse 运行它。这会是个问题吗?

标签: python bash xtext xtend


【解决方案1】:

当您在命令行中运行它时,您可能会获得与它在 JVM 中运行时不同的环境。在您的 bash 脚本中,尝试直接指向您打算使用的 python 版本。 JVM 的 env 完全有可能指向不同版本的 python。或者环境没有完全设置好。

尽量放完整路径,像这样,例如:

#!/bin/bash
/usr/bin/python2.7/python WebRoot/result.py

【讨论】:

    最近更新 更多