주석으로 파이썬 스크립트 명시하기

파이썬 코드를 보면 가끔 이런 형식의 코드가 있을 것입니다.

#!/usr/bin/python
print "Hello, world!"

위와 같이 맨 윗줄에 주석으로 #!/usr/bin/python 이렇게 있을 것입니다. 이는 리눅스에서 파이썬 스크립트를 실행하는 프로그램의 경로를 지정하는 것입니다. 이 예제에서는 파이썬이 설치된 경로가 /usr/bin이라고 가정하고 작성한 것입니다. 이 파일 이름을 hello.py라고 저장한 후 아래와 같이 chmod 명령어를 이용하여 실행 가능하게 퍼미션을 설정하고 그 파일 이름을 쳐서 실행합니다. (윈도우즈의 cmd와는 다르게 앞에 ‘./‘ 표시를 붙여야 합니다.)

$ chmod +x hello.py
$ ./hello.py
Hello, world!
$ 

이와 같이 /usr/bin 디렉터리에 있는 파이썬 2로 프로그램이 실행됩니다.

그런데 이번에는 프로그램을 다음과 같이 수정하면 어떻게 될까요?

#!/usr/bin/python3
print "Hello, world!"

python 대신 python3으로 바꾸었습니다. 최근 나오는 리눅스 배포판에서는 파이썬 2와 파이썬 3이 동시에 설치되어 있는 경우가 많은데 대개는 기본적으로 python이라고만 하면 파이썬 2를 실행하고 파이썬 3을 실행시키려면 python3이라고 입력해서 실행합니다. 어쨌든 이렇게 바꿔서 실행을 시도하면,

$ ./hello.py
  File "./hello.py", line 2
    print "Hello, world!"
                        ^
SyntaxError: Missing parentheses in call to 'print'
$ 

이번에는 이와 같이 오류를 발생시킵니다. 왜냐하면, #!/usr/bin/python3 이렇게 수정하면 /usr/bin 경로에 있는 파이썬 3로 실행시키라는 뜻으로 받아들이고 파이썬 3 기반에서 코드가 돌아갑니다. 그런데 파이썬에서 Hello, world! 출력하기 포스트에서도 서술한 바와 같이 print 문은 파이썬 2.7까지는 print "Hello, world!"와 같이 괄호 없이 쓸 수도 있고 print("Hello, world!")와 같이 괄호를 넣고 쓸 수도 있었지만 파이썬 3에서는 후자의 방법만 인정되기 때문에 위와 같은 오류를 일으키게 됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다.