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
발생 원인: Py 파일이 UFT8 with BOM 인코딩으로 저장됨
Visual Code 에서 하단 메뉴를 보면 인코딩 방식(UTF8 with BOM)과 줄 바꿈 방식(LF)을 확인 할 수 있습니다.
※ 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로 다시 저장하면 정상적으로 실행됩니다.
- Visual code에서 하단에 'UTF8 with BOM' 선택
- Task 실행 메뉴에서 'Save with Encoding' 선택
- 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 폴더 및 파일 처리 함수 모음
댓글