brunch

You can make anything
by writing

C.S.Lewis

by Kim Sjoon George Oct 07. 2019

python2 ⇒ python3

analyzingcontext.com 업그레이드 계획...

테스트 설계 도구인 analyzingcontext.com의 업그레이드 작업의 일환으로 많은 python2 --> python3로의 포팅 작업을 하였고 이에 대한 기록을 여기에 남긴다.


2to3.py의 사용

python3.x 설치시 제공되는 2to3.py로 기본적인 문법 변경은 자동으로 가능하다. 예를 들어 

print "python" 등은 자동으로 print("python") 으로 바꾸어 준다.


사용자정의 라이브러리 경로 문제

초반에 좀 고생했던 부분이다. 사용자 정의 라이브러리들이 전부 인식 불능이 되어 버렸다. 기존 python2에서는

sys.path.append(myLibPath)

를 사용하여 사용자 라이브러리 폴더를 인식했었는데 이게 안먹히는 것 같았다. 그냥 전부 '폴더.라이브러리파일' 형태로 바꾸어 엑세스 했다. 

from libs.getParams import catch_conditions

개인적인 느낌은 sys 관련 내용들을 많이 줄인 것 같다. 


UTF-8관련 처리 삭제

UTF-8처리를 위해 str 객체에 decode('UTF-8') 을 적어놓은 부분이 있는데 오류로 떴다. python3에서는 utf 처리를 자동으로 해 주는 걸로 알고 있어 이런 부분들은 전부 삭제 하였다. 


'/' 연산 문제

기존 코드내 로직중에 '/' 연산에서 몫만 취하는 부분이 있다 (예를 들어 3/2 --> 1) python2에서는 

3/2 = 1 

이 나왔으나 python3에서는

3/2 = 1.5

가 나와 오류를 일으켰다. 몫만 취하려면 '/' 대신 '//' 를 써야 한다. 

3//2 = 1



더 많은 세부적인 코드의 차이점이 있겠지만, 내가 경험한 것은 이 4가지이다. pypict를 위해 적용했는데 좀 빨라진 것 같기도 하다. (Time을 재봐야 겠다)



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari