OSError: [Errno 8] Python의 Exec 형식 오류

Rohan Timalsina 2023년6월21일
  1. Linux에서 OSError: [Errno 8] Exec 형식 오류 재생성
  2. Linux에서 OSError: [Errno 8] Exec 형식 오류 수정에 #!/bin/sh 추가
  3. sh를 사용하여 Linux에서 OSError: [Errno 8] Exec 형식 오류 수정
OSError: [Errno 8] Python의 Exec 형식 오류

Python의 subprocess 모듈을 사용하면 새 프로세스를 생성하여 명령을 실행할 수 있습니다. 메서드를 사용하여 셸 스크립트를 실행할 때 때때로 Linux에서 OSError: [Errno 8] Exec 형식 오류가 발생할 수 있습니다.

실행 형식 오류 문제는 스크립트가 올바른 인터프리터를 통하지 않고 직접 실행될 때 발생합니다. 스크립트 파일의 시작 부분에 shebang 줄이 없는 경우 발생합니다.

이 튜토리얼은 Linux의 OSError: [Errno 8] Exec 형식 오류를 수정하는 방법을 알려줍니다.

Linux에서 OSError: [Errno 8] Exec 형식 오류 재생성

먼저 Linux에서 OSError: [Errno 8] Exec 형식 오류를 다시 만들어 보겠습니다.

다음은 Welcome to DelftStack Tutorials를 반환하는 Bash 스크립트 myshell.sh입니다.

echo "Welcome to DelftStact Tutorials"

아래는 subprocess.Popen()을 사용하여 위 스크립트를 실행하는 Python 스크립트 myscript.py입니다.

import subprocess

shell_file = "/home/delft/myshell.sh"
P = subprocess.Popen(shell_file)

터미널에서 Python 스크립트를 실행합니다.

python3 script.py

출력:

Traceback (most recent call last):
  File "myscript.py", line 3, in <module>
    P = subprocess.Popen(shell_file)
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/home/delft/myshell.sh'

보시다시피 OSError: [Errno 8] Exec 형식 오류 오류를 반환합니다.

Linux에서 OSError: [Errno 8] Exec 형식 오류 수정에 #!/bin/sh 추가

이 문제를 해결하는 가장 좋은 방법은 셸 스크립트 파일 myshell.sh의 맨 위에 #!/bin/sh를 추가하는 것입니다. 시스템이 .sh 스크립트를 실행하기 위해 올바른 인터프리터를 사용하는지 확인합니다.

아무 편집기로 myshell.sh 파일을 편집하고 아래 행을 추가하십시오.

#!/bin/sh
echo "Welcome to DelftStack Tutorials"

이제 Python 스크립트를 실행하여 결과를 확인하십시오.

python3 myscript.py

출력:

Welcome to DelftStack Tutorials

sh를 사용하여 Linux에서 OSError: [Errno 8] Exec 형식 오류 수정

쉘 스크립트 파일을 실행하는 명령의 Python 스크립트에서 sh를 지정할 수도 있습니다.

여기에 그 예가 있습니다.

import subprocess

shell_file = "/home/delft/myshell.sh"
P = subprocess.Popen(["sh", shell_file])

다음으로 Python 스크립트 파일을 실행합니다.

python3 myscript.py

출력:

Welcome to DelftStack Tutorials

이제 OSError: [Errno 8] Exec 형식 오류를 해결하고 Linux에서 Python을 사용하여 셸 스크립트를 실행하는 방법을 알았습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - Python Error