使用Python进行Shell脚本时出现“找不到命令”

0 投票
2 回答
1529 浏览
提问于 2025-04-18 17:29

我有一个Python脚本:

#!/usr/bin/python

print 'hi'

我想把这个脚本作为一个任务发送到计算集群上执行。我是用qsub命令来发送的,像这样:qsub myscript.py

在运行之前,我执行了以下操作:

chmod +x myscript.py

但是当我打开输出文件时,我发现里面是这个:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

而当我打开错误文件时,我发现里面是这个:

print: Command not found.

那到底出了什么问题呢?!

补充:我按照这个问题中的说明操作的。

2 个回答

0

一种方法是把解释器设置为python,像这样:

qsub -S /usr/bin/python  myscript.py

我很确定还有其他方法可以做到这一点,而不需要使用-S选项,让SGE根据文件开头的解释器来执行代码;不过,这个解决方案可能已经足够满足你的需求。

另外,关于这个输出:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

似乎可以安全地忽略这个:

http://www.linuxquestions.org/questions/linux-software-2/warning-no-access-to-tty-bad-file-descriptor-702671/

编辑:

这个方法也有效:

qsub <<< "./myscript.py"
qsub <<< "python ./myscript.py"
0

看起来 qsub 没有读取你的 shebang 行,所以它只是用 shell 来执行你的脚本。

这个回答提供了几种处理方法,具体取决于你的系统: 我该如何在命令行中使用 qsub 和 Python?

撰写回答