无法从Eclipse中的Pydev环境运行shell脚本

时间:2014-10-13 17:10:21

标签: python linux eclipse shell subprocess

我正在使用Centos 7.0并在Pydev环境中安装了Eclipse Kepler。我想使用子进程通过Python运行一个简单的c shell脚本,如下所示:

import subprocess
subprocess.call(["./test1.csh"])

这个c shell脚本在终端中执行,如果我运行命令,如" ls"或者"" pwd然后我得到正确的输出,例如。

subprocess.call(["ls"]) # give me the list of all files
subprocess.call(["pwd"]) # gives me the location of current directory.

但是当我运行subprocess.call([" ./ test1.csh"])时,我收到以下错误:

Traceback (most recent call last):
File "/home/nishant/workspace/codec_implement/src/NTTool/raw2waveconvert.py", line 8, in <module>
    subprocess.call(["./test1.csh"])
File "/usr/lib64/python2.7/subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

我哪里错了?请建议

1 个答案:

答案 0 :(得分:2)

确保文件test1.csh是可执行的。正如Lukas Graf评论的那样,还要检查第一行中的shebang(#!...)。

要确认这一点,在通过Python运行之前,请在shell中运行它。

$ ls -l test1.csh
...
$ ./test1.csh

当前工作目录与在终端中运行时不同。指定shell脚本的完整路径。或者更改PyDev中的工作目录配置。

<强>更新

预装shell可执行文件:

import subprocess
subprocess.call(["csh", "./test1.csh"])