아직까진 공식 명칭이 OS X이니 (올 가을(!) 정식 출시될 다음 버전은 macOS 라는 이름으로 나온다고 한다) 이 명칭으로 작성.
현재 사용중인 맥은 OS X El Capitan, 10.11.6 버전입니다.
OS X에는 기본적으로 Python 2버전이 설치되어 있고, 이 맥의 파이썬 버전은 다음과 같습니다.
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
지난 학기 교환학생으로 갔던 수업 과제도 파이썬을 조금 썼는데, 2.7버전으로 썼습니다. 3버전 쓰는 친구는 2버전 설치해서 썼어야 했던걸로 기억...
파이썬이란 언어가 2.x 버전과 3.x 버전이 공존한다는 이야기는 알고 있었지만, print문 방식이 다르다는 가장 큰 차이점 이외에 제대로 알진 못하고 썼습니다.
그런데 이번 학기 수업 하나의 과제-가 벌써 나왔다-로 써서 낼 리포트가 있으므로, 설치하면서 겸사겸사 블로그에 정리해봅니다.
파이썬 다운로드 페이지의
Wondering which version to use? Here’s more about the difference between Python 2 and 3.
위 링크 내용을 일부 번역해보는데, 의역과 오역이 있을 수 있음을 감안하고, 오역의 경우 댓글로 알려주시면 고쳐놓겠습니다.
개발할 때 파이썬 2를 써야하나요 3을 써야하나요?
(2와 3의) 차이는 무엇인가요?
간단히 말해서, 파이썬 2.x버전은 레거시 버전, 3.x는 현재 그리고 미래에 계속 개발되는 언어입니다.
파이썬 3.0은 2008년에 릴리즈 되었습니다. 파이썬 2.x대의 마지막 버전인 2.7버전은 2010년 중반에 나왔는데, 지원이 끝난 마지막 릴리즈입니다. 2.x대 버전은 이후에 어떠한 메이저 릴리즈도 없을겁니다. 3.x대는 현재 개발중인 버전이며, 2012년의 3.3, 2013년의 3.4, 2015년의 3.5를 포함, 현재 stable 릴리즈로 5년 넘게 나와있는 상태입니다. 이것은 모든 최신 표준 라이브러리들이 3.x 위에서 기본으로 돌아가는 것을 의미합니다.
귀도 반 로섬 (파이썬의 초기 제작자) 은 이전 버전의 호환성에 덜 의존하면서 2.x 버전을 정리하기로 마음먹었습니다. 3.x대의 가장 큰 개선점은 유니코드에 대한 더 나은 지원 (모든 텍스트 스트링이 기본으로 유니코드를 사용), 그리고 더욱 제대로 된 바이트/유니코드 구분입니다.
게다가, 언어의 핵심에 해당하는 몇몇 부분 (print와 exec가 statements가 되고, integer가 나눗셈에서 소숫점 아래를 사용)이 새로운 사용자들에게 더 배우기 쉽고 다른 언어들과 더 일관성있도록 바뀌었으며, 오래된 복잡한 기능들은 삭제되었습니다.(모든 클래스들이 이젠 새로운 스타일all classes are now new-style이며, range()는 2.x대의 리스트에서 3.x에는 메모리에 효율적인 iterable로 바뀌었습니다.)
파이썬 3.0에서 달라진 점 문서는 주된 변경점에 대한 좋은 오버뷰를 제공하며, 기존의 파이썬 2.x 코드와의 비호환성을 확인할 수 있는 문서입니다. 닉 코글란 (CPython의 핵심 개발자 중 한 명)은 이 (2.x에서 3.x로의) 이전에 대해 상대적으로 광범위한 FAQ를 제공합니다.
하지만, 드넓은 파이썬 생태계는 수년간에 걸쳐 엄청나게 많은 퀄리티 있는 소프트웨어들을 생산해냈습니다. 3.x대가 호환성을 가져가지 않는 점 때문에 몇몇 소프트웨어들 (특히 회사 내에서 쓰는 소프트웨어들) 같은 경우 아직도 3.x에서는 작동하지 않기도 합니다.
어떤 버전을 써야 합니까?
어떤 버전을 쓰는지는 당신이 무슨 일을 할 지에 달려 있습니다 .
만일 당신이 모든 일을 3.x로 처리할 수 있다면, 좋습니다. 3.x대의 몇 가지 불리한 면이라고 하면, 아주 조금의 라이브러리가 지원되지 않는다는 점, 그리고 현재의 몇몇 리눅스 배포판들과 맥들은 파이썬 3가 지원됨에도 불구하고 여전히 2.x대를 기본으로 사용한다는 점이지만, 언어로써의 파이썬 3.x대는 확실히 준비되어 있습니다. 유저의 컴퓨터에 파이썬 3.x대가 설치되어 있는 한, 그리고 당신이 파이썬 2.x 모듈이 필요하지 않는 곳에서 사용하는 한, 3.x대는 훌륭한 선택입니다. 또한, 대부분의 리눅스 배포판들은 이미 파이썬 3.x가 설치되어 있고, 사용자들(end-users)에게 사용할 수 있도록 하고 있습니다.
특히, 파이썬을 새 프로그래머들에게 소개하는 사람은 먼저 파이썬 3을 가르친 후, 필요하다면 파이썬 2와의 차이점을 나중에 소개하는 것이 좋습니다. 파이썬 3은 파이썬 2를 배우려는 초급 프로그래머들이 실수하기 쉬운 부분들을 많이 제거했기 때문입니다.
하지만, 파이썬 3보다 2를 써야 할 만한 이슈가 있을 수 있습니다.
- 첫째, 만약 당신이 컨트롤할 수 없는 환경에 배포(deploy)하는 경우, 이는 가능한 버전들을 선택하기보단 특정한 버전을 사용할 것을 암시하는 것일 수 있습니다.
- 둘째, 만일 파이썬 3을 아직 지원하지 않는 특정 서드파티 패키지나 유틸리티를 사용하는 경우, 그리고 해당 패키지를 파이썬 3으로 포팅하는게 간단한 일이 아닌 경우, 그 패키지에 접근하려면 파이썬 2를 사용해야만 할 수도 있습니다.
(중략)
그럼 2.x대를 피해야 하는 것 아닙니까? 많은 실수가 나올 수 있는 오래된 언어이고, 그들을 피할 수 있는 메이저 버전이 나와 있잖아요.
음, 완전히 그렇다고 할 수만은 없습니다. 파이썬 3.0의 몇몇 개선점은 2.6에, 3.1의 몇몇 개선점은 2.7에 백포팅되었습니다.
파이썬 3.x대에서만 사용 가능하고, 2.x에 백포팅되지 않을 항목들 중 일부는 아래와 같습니다.
strings are Unicode by default 스트링이 유니코드를 기본으로 사용
clean Unicode/bytes separation 깔끔한 유니코드와 바이트의 구분
exception chaining
function annotations
syntax for keyword-only arguments
extended tuple unpacking
non-local variable declarations
또한, 언어의 진화는 문법이나 의미의 변화에 한정된 것이 아닙니다. 스탠다드 라이브러리 또한 이에 해당하며, 3.x대의 개선점들은 파이썬 2.x에 백포팅되지 않을 것입니다. 하지만, PyPI를 통해 2.x버전들도 라이브러리 개선점들을 사용할 수 있기는 합니다.
잘 쓰여진 2.x대의 코드는 3.x의 코드와 많이 비슷할 것입니다. 이는 많은 것을 의미하는데, 새로운 스타일의 클래스 사용, print 사용, 가능한 lazy iterator의 사용 등을 포함합니다. 실례로, 좋은 2.x 코드는 보통 range보다 xrange를 사용할 것이고, xrange는 파이썬 3.x대의 range 구현의 시작점이기도 했습니다. (sys.maxint보다 큰 값을 다룰 수 있는 점이, range가 파이썬 3에서 더 좋아진 점이긴 합니다.) xrange()는 파이썬 3에 포함되어 있지 않습니다.
무엇보다도, 당신은 2.x와 3.x의 비교가 덜 문제되도록, '좋은' 코드를 쓰는 것에 초점을 맞춰야 합니다. 이는 단위 테스트에 적합하며, 유니코드를 바르게 쓰는 것을 포함합니다. (파이썬 3은 유니코드와 바이트 이슈를 더 엄격하게 봅니다. 이는 좋은 일이라고 여겨지지만, 몇몇 소프트웨어 패키지를 포팅할 때엔 꽤나 화나는 일이 되기도 합니다.)
파이썬 3을 쓰고 싶지만, 파이썬 2.x만 지원하는 소수의 라이브러리가 있습니다. 파이썬 2로 가야 할까요 아니면 그 라이브러리를 쓰는 것을 포기해야 하나요?
파이썬 3을 지원하는 대체 패키지를 찾지 못했다고 가정하고서도, 여전히 고려해 볼 만한 몇 가지 옵션이 있습니다.
- 라이브러리를 3.x대로 포팅할 것(포팅 = 라이브러리를 3.x에서 작동하도록 만드는 것)
- 그것이 매우 어려운 경우, 그리고 모든 의존성이 2.x에 존재하는 경우, 2.x대의 사용을 준비할 것. 이전에 이미 언급했듯, 좋은 2.x 코드는 모든 의존성이 잘 포팅되었을 것이므로 스위칭이 덜 고통스러울 것.
- 그 기능이 그렇게 중요한지 고민하고, 그 기능을 제외할 것을 고려할 것
(후략)
맥에 파이썬 3을 설치하는 방법은 크게 파이썬 홈페이지에서 직접 다운로드한 pkg파일을 설치하는 방법, 그리고 터미널에서 brew로 설치하는 방법이 있습니다.
저는 GUI가 익숙하므로 pkg 파일을 받아서 설치... 하려는데, 맥 기본 파이썬은 2.x버전이라는게 좀 걸리네요.
http://kybin.github.io/translateDiveIntoPython3korean/installing-python.html#macosx
이 글을 봤는데, 중간에 'Fix system Python' 부분을 체크 해제하고 설치하는 부분이 나옵니다.
그런데 제가 pkg파일 받아서 실행하니 그 부분이 없었어요.
전 이렇게 떠서, pip가 시스템 파이썬을 건드리나...는 모르겠고,
위 글이 오래된 글이라 그런가보다 싶지만, 찜찜해서 그냥 brew로 설치하기로 합니다.
brew install python3
입력하니까 파이썬이 설치는 되는데,
3.5.0 버전이 설치가 됩니다.
어? 내가 아는 최신 버전은 3.5.2인데?
brew를 안 쓴지가 꽤 돼서 업데이트를 안해서 그런 것 같네요.
brew update
brew upgrade python3
해줍니다.
한참 후에 잘 설치가 됐다고 뜨네요.
python을 치면 시스템에 기본으로 설치되어 있는 Python 2.7.10 버전이,
python3을 실행하면 지금 설치한 Python 3.5.2 최신버전이 뜹니다.
설치는 이렇게 끝났고...
이제 뭘 해서 여기에 익숙해져야 하나...
'Computer' 카테고리의 다른 글
WebGoat 5.4 + 프록시 포트 세팅 (0) | 2016.10.05 |
---|---|
맥북(맥프레)에서 오버워치 돌리기 (4) | 2016.09.18 |
초간단한 curl과 맥 터미널 쉘스크립트를 이용한 웹페이지 내용 가져오기 (0) | 2016.05.03 |
OS X El Capitan 업그레이드 후 NTFS 쓰기 불가 및 해결 (루트리스 관련) (0) | 2015.10.05 |