Trouble with subprocess.call(...) and zsh script (OSError: [Errno 8] Exec format error)
Michael George Lerner
mglerner at gmail.com
Tue Nov 13 18:41:48 EST 2007
On Nov 11, 3:25 pm, Rob Wolfe <r... at smsnet.pl> wrote:
Hi Rob,
> Michael GeorgeLerner<mgler... at gmail.com> writes:
>
> > Hi,
>
> > (Python 2.5, OS X 10.4.10)
> > I have a program called pdb2pqr on my system. It is installed so that
> > "pdb2pqr" is in my path and looks like:
>
> > #\!/bin/zsh -f
>
> Are you sure that this shebang is correct?
Well, it's correct in the sense that I have faithfully reproduced the
contents of the file. I didn't write it, though.
I don't know what the extra backslash is for. I suppose I'll contact
the authors and find out.
Any ideas how to make it work with the strange shebang syntax?
Thanks,
-michael
>
> I've tested that on bash and have similar error:
>
> # t1.sh
>
> #\!/bin/sh
> echo "t1"
>
> >>> from subprocess import call
> >>> call(['./t1.sh'])
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "/usr/lib/python2.4/subprocess.py", line 413, in call
> return Popen(*args, **kwargs).wait()
> File "/usr/lib/python2.4/subprocess.py", line 543, in __init__
> errread, errwrite)
> File "/usr/lib/python2.4/subprocess.py", line 975, in _execute_child
> raise child_exception
> OSError: [Errno 8] Exec format error
>
> But running that directly through the shell works:
>
> >>> call(['./t1.sh'], shell=True)
>
> t1
> 0
>
> However this script works fine also without `shell=True` option:
>
> # t2.sh
>
> #!/bin/sh
> echo "t2"
>
> >>> call(['./t2.sh'])
>
> t2
> 0
>
> HTH,
> Rob
More information about the Python-list
mailing list