2to3란?
Python은 버전에 따라 작성된 코드가 2.x버전에서 동작하고 3.x 버전에서는 동작하지 않는 경우가 발생한다. 이를 위해 Python에서는 2to3.py를 제공하여 2.x 버전의 소스코드가 3.x 버전에 호환되도록 변환해주는 소스를 기본으로 제공한다.
Python 2.x 버전 용 스크립트 작성 및 테스트
우선 테스트를 위해 Python2.x에서만 동작하는 소스 코드를 아래와 같이 작성하고 C드라이브 최상위 경로에 저장한다.
# C:\joon.py
def joon(a):
print u"Result :", a/2
num = raw_input("Input any number")
joon(int(num))
단순히 사용자가 입력한 숫자의 절반을 나눠 출력해주는 함수이다.
여기에서 print의 사용법이 2.x 버전과 3.x 버전이 크게 다르다는 것을 볼 수 있다.
python 3.9 버전에서 테스트 결과 예상했던대로 print 부분에서 에러가 발생한다.
2to3.py를 활용한 변환
이번 글에서는 윈도우에 설치된 파이썬의 2to3.py를 사용해 볼 것이다.
우선 Python의 2to3.py는 파이썬이 설치된 Python 폴대 내부의 Tools 밑에 scripts 폴더 내부에 존재한다.
따라서 cd 명령어를 사용하여 해당 경로로 이동하여 dir 명령어를 입력하여 2to3.py가 존재하는지 확인해본다.
cd C:\Program Files\Python39\Tools\scripts
python 2to3.py -w C:\joon.py
명령어를 위와 같이 입력하면 3.x에 호환되도록 소스코드가 자동으로 변환되며 변경된 점이 출력된다.
-w 옵션은 코드의 수정 여부 출력을 하기 위해 사용한다.
코드를 변환하면 이전의 joon.py의 소스코드가 python 3.x 버전에 맞게 내용이 수정되고 이전 코드는 joon.py.bak 파일로 백업된다.
변환된 소스코드 확인 및 테스트
def joon(a):
print("Result :", a/2)
num = input("Input any number")
joon(int(num))
print의 문법이 3.x에 호환되도록 소스코드가 수정되었다.
소스코드를 실행해보면 정상작동하는 것을 볼 수 있다.
참고한 사이트
https://docs.python.org/ko/3/library/2to3.html
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=vslinux&logNo=220592751246
'Python' 카테고리의 다른 글
Python 복습 7일차 기록 (0) | 2021.07.12 |
---|---|
Python 복습 6일차 기록 (0) | 2021.07.11 |
Python 복습 5일차 기록 (0) | 2021.07.10 |
Python 복습 4일차 실습 문제 풀기 (0) | 2021.07.09 |
Python 복습 4일차 기록 (0) | 2021.07.09 |