subprocess.Popen(): OSError: [Errno 8] Pythonで実行形式エラー? 質問する

subprocess.Popen(): OSError: [Errno 8] Pythonで実行形式エラー? 質問する

昨日、スクリプトとその引数を構成する文字列であるコマンドを使用scriptして実行するPython を記述して実行しました。このスクリプトは昨日まで正常に動作していました。今日、同じスクリプトを実行したところ、このエラーが継続的に発生します。shellsubprocess.Popen(command.split()).sh

p=subprocess.Popen(shell_command.split())
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error

この質問に関連して、以前にも似たような質問があったことは知っていますが、私の場合はすべて試しましたが、目的は解決しませんでした。 は機能しshell=Trueません。シェルスクリプトが別のシェルスクリプトを呼び出すため、その前にそのスクリプトを実行するために何らかの環境を設定する必要があります。私はこれでひどく行き詰まっています。システムを一度再起動するだけです。 を使用していますubuntu 12.04

編集:

 import subprocess
 import os
 import sys

 arg1=sys.argv[1]
 arg2=sys.argve[2]

 shell_command = 'my_path/my_shell.sh ' + arg1 + ' '+ arg2
 P = subprocess.Popen(shell_command.split())
 P.wait()

my_shell.sh:

  arg1=$1
  arg2=$2

  cd $TOP
  setup the environment and run shell script
  build the kernel ...
  execute shell command .....

ベストアンサー1

私は、呼び出されたシェル スクリプトの先頭に次の行を追加することでこの問題を解決しました。

#!/bin/sh

これにより、スクリプトを実行するときにシステムが常に正しいインタープリターを使用することが保証されます。

おすすめ記事