Python 2.x vs 3.x 그리고 윈도우즈 vs 리눅스
결론
Anaconda 처럼 개발 환경을 관리해주는 소프트웨어를 활용해보자.
Python웹서버가 목적이면 윈도우즈도 괜찮다. 하지만 tensorflow를 써보고 싶다면 리눅스에서 시작하는 것을 고민해보자.
문제상황
Python은 생산성이 높고 C보다 학습하기가 쉽기 때문에 최근에는 컴퓨터 공학을 가르치는 대학들도 C가 아니라 Python으로 시작하는 경우가 있다. C로 학습을 시작하더라도 요즘엔 C만 써서 제품을 만드는 경우가 오히려 특이하기 때문에 현업에 나가기 전에 웹은 Java, 게임은 C++을 다시 배우는 경우가 대부분이다. 물론 컴퓨터 공학을 공부하는데 있어서는 C의 장점도 많지만 현장에서 사용이 제한된다는 것과 바닥부터 상업용 프로젝트 수준까지 만들려면 작업량이 엄청나다는 점, 그래서 생산성이 최신 언어에 비해 뒤쳐진다는 점은 고민해 볼 문제다. 이 지점에서 Python 생태계는 C보다 훨씬 접근성이 좋기 때문에 외부 라이브러리를 이용해 엔터프라이즈급 제품을 뽑아내는 데 걸리는 시간이 압도적으로 짧다.
그.런.데.
Python입문시 가장 짜증나는 문제 중에는 2.대 버전과 3.대 버전 중에서 도대체 무엇을 써야 하느냐는 것이다. 책에 있는 예제를 연습할 때는 소소한 문법적 차이에만 주의하면 상관이 없지만 PIP 등을 사용해서 외부 Python 모듈을 사용하려고 하면 버전 문제 때문에 아예 실행조차 되지 않는 경우가 발생한다. Python을 사용하는 사람이 반드시 만나게 되는 문제인데, 이런 종류의 문제가 늘 그렇듯 내가 짜증나는 지점은 남들도 짜증나기 마련이고 누군가 이미 해법을 찾아놓은 경우가 많다.
일단 Anaconda를 써보자.
Anaconda는 여러 개의 ‘환경’을 만들 수 있는데 마치 윈도우즈나 리눅스에서 별도 계정을 만들어 저마다 다른 소프트웨어를 설치하듯 환경별로 Python 버전을 다르게 주거나 환경마다 다른 패키지를 설치해서 사용할 수 있다.
그럼 Anaconda만 쓰면 땡인가?
윈도우즈 vs 리눅스 문제가 남아있다
안타깝지만 열심히 예제대로 pip 명령어를 쓰다 보면 윈도우즈에서는 실행이 안 되는 경우를 만날 수 있다. 대체할 수 있는 모듈이면 그러려니 하고 다른 대안을 찾으면 되겠지만 tensorflow 같은 모듈이 동작하지 않으면 방법이 없다.
tensorflow 기반 프로젝트인 magenta를 써보려다 이 문제를 마주쳤는데 2016년부터 이 이슈를 인지하고 있긴 하지만 아직 windows를 지원할 예정이 없다는 소식을 듣게 되었다. 이슈보기
특히 tensorflow 같은 경우에 gpu 연산을 쓰고 싶으면 linux 외에는 아직 방법이 없다. tensorflow에 의존성이 있는 프로젝트도 마찬가지다.
물론 Django나 Flask같은 Python 웹서버의 경우 대부분 윈도우즈 환경도 잘 지원한다. 그러니 Python을 쓰는 이유가 웹 호스팅이면 윈도우즈 환경이라도 별 문제가 없을 것이다. 하지만 국내에서 Python을 쓰는 기업이나 연구소 중에는 머신러닝 하나만 보고 Python을 선택한 경우도 많다. 사용 목적에 따라서 생각도 못 했던 OS가 발목을 잡는 상황을 마주칠 수 있다는 점을 늘 고려해야 한다. 파이썬 개발 환경은 commit도 안 되므로 열심히 세팅한 개발 환경을 linux에서 또 처음부터 해야 된다면 정말 열불나는 경험이 아닐 수 없다.