OSError: [Errno 8] Python의 Exec 형식 오류
-
Linux에서
OSError: [Errno 8] Exec 형식 오류
재생성 -
Linux에서
OSError: [Errno 8] Exec 형식 오류
수정에#!/bin/sh
추가 -
sh
를 사용하여 Linux에서OSError: [Errno 8] 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을 사용하여 셸 스크립트를 실행하는 방법을 알았습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.
관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.