본문 바로가기
SW 개발/Python

Python Error: #!/usr/bin/env python3: 그런 파일이나 디렉터리가 없습니다 (No such file or directory)

by Kibua20 2020. 8. 19.

Python code를 작성하다 보면 #!/usr/bin/env python3 구문에서 에러가 발생하는 경우가 있습니다.  예를 들어 윈도에서 작성한 파이썬 파일을 리눅스에서 수정 및 실행을 하다 보면 에러가 발생할 수 있습니다. 이전 포스팅 (https://kibua20.tistory.com/73)에서는 윈도우와 리눅스에서 줄 바꿈 문자가 문제가 되는 경우도 있고,  아래와 같이 윈도우와 리눅스의 UFT8 인코딩 방식에 의해서 에러가 발생하는 경우도 있습니다.   

 

Python code: Code에는 문제가 없다.

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

import os

 

print ('test')

 

에러 메시지 

 #!/usr/bin/env python3: 그런 파일이나 디렉터리가 없습니다

 #!/usr/bin/env python3:  such file or directory

 #!/usr/bin/python3: 그런 파일이나 디렉터리가 없습니다

 #!/usr/bin/python3:  No such file or directory

Python 에러 메시지

 

발생 원인: Py 파일이 UFT8 with BOM 인코딩으로 저장됨  

Visual Code 에서 하단 메뉴를 보면 인코딩 방식(UTF8 with BOM)과 줄 바꿈 방식(LF)을 확인 할 수 있습니다. 

Visual Code에서 인코딩 방식과 줄 바꿈 방삭 확인하는 방법

UTF8과 UFT8 with BOM 차이 설명 (출처)

바이트 순서 표시(Byte Oder Mark, BOM)은 UTF-8, UTF-16 등을 구분하기 위한 값

UTF-8은 BOM 값을 사용하지 않아도 되지만, 윈도우 기본 내장 프로그램 등에서는 UTF-8(BOM)을 기본으로 사용하며,

유닉스/리눅스 편집 프로그램에서는 UTF-8을 기본으로 사용.

윈도우는 UTF-8, UTF-8(BOM) 모두 인식하여 처리하지만, 유닉스/리눅스에서는 UTF-8만 처리 UTF-8(BOM)은 처 지하지 못하여, 크로스 플랫폼에서 UTF-8 형식으로 오류가 발생하기도 함

*윈도우에서 UTF-8(BOM)이 기본인 것은 일반 ANSI 형식과 구분하기 위한 값으로 여겨짐

 

 수정 방법) UTF8로 다시 저장

아래와 같이 UTF8로 다시 저장하면 정상적으로 실행됩니다. 

  1. Visual code에서 하단에 'UTF8 with BOM' 선택
  2. Task 실행 메뉴에서 'Save with Encoding' 선택
  3. UTF8 선택

 

관련 글

[모바일 SW 개발/Python] - Python SyntaxError: Non-ASCII character in file on, but no encoding declared

[모바일 SW 개발/Python] - Python 2.7과 3.8호환성: a bytes-like object is required, not 'str'에러 수정

[모바일 SW 개발/Python] - [Tips] Python 에서 XML comment 처리 - Sample code 제공

[모바일 SW 개발/Python] - Python 에러: /usr/bin/env: `python3\r': 그런 파일이나 디렉터리가 없습니다

[모바일 SW 개발/Python] - Python 표준 입출력(stdin/stdout) 활용 - 리눅스 프로그램과 연동

[모바일 SW 개발/Python] - Python 소스 숨기는 방법: pyc 활용 (Bytecode로 컴파일)

[모바일 SW 개발/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)

[개발환경/Web Server] - Python: Web Framework Flask 사용하기

[모바일 SW 개발/Python] - Python: OSError: [Errno 98] Address already in use (Flask)

[모바일 SW 개발/Python] - Python 폴더 및 파일 처리 함수 모음

 




댓글2