파이썬 초보 - virtualenv

2015, Jul 19    

비전공자가 배우는 파이썬

3년 전 대학 졸업반 시절만해도 프로그래밍같은 걸 시도하게 될 줄은 몰랐습니다. 그때는 한창 디자인 방법론, 제품 서비스 혁신 등이 화두였던지라 애플이나 삼성의 경영전략을 공부하거나 UX/UI가 대체 뭐고 어떻게 써먹어서 좋은 무언가를 만드나? 에 관심을 두었던 것 같습니다. 그러다 IT 쪽으로 사회생활을 하면서 ‘생각을 현실로 옮기는’ 옆자리의 개발자님들을 보고 알음알음 코드를 써보기 시작했습니다. 배운지 1년이 지나도 아직 겨우 간단한 스크립트만 만드는 수준이지만, 그래도 저같은 비전공자가 또 있다면 도움이 될까 싶어 글을 남겨봅니다.

Command Line Interface

커맨드 라인 인터페이스는 그 옛날 DOS같이 프롬프트가 깜빡거리는 빈 화면입니다. 맥에서는 깔려있는 프로그램 중 terminal을 실행시키면 열립니다. 개인적으로 이 녀석이 비전공자가 프로그래밍을 하는데 가장 큰 허들이지 않나 싶습니다. 마우스로 아이콘을 클릭하는 편리하고 직관적인 환경에 익숙해진 저같은 사람으로서는 아무것도 없는 창이 좀 부답스러웠습니다. 대체 뭘 쳐야 할까? 고민이 많이 됩니다. 그런데 일단 다음과 같은 기본적 명령어만 잘 응용해서 쓰면 큰 문제는 없습니다.

  • cd - 폴더 이동기능. 맥에서 terminal을 실행하고 바로 cd Desktop을 치고 엔터를 누르면, 데스크톱 폴더로 이동합니다. cd ..을 치면 바로 상위 폴더로 이동합니다.
  • mkdir - 폴더를 만듭니다. mkdir sample_folder
  • touch - 파일을 만듭니다. touch sample_index.html
  • python - 파이썬을 실행시킵니다. python만 치면 됩니다. ipython이 깔려있다면 ipython을 치면 됩니다. 또 다른 명령어가 있지만 일단 요 3개가 많이 쓰는 명령어 가운데 가장 기초적인 듯 합니다.

파이썬 가상 개발환경 만들기 - virtualenv

기본적인 파이썬만으로도 많은 것을 할 수 있지만, [Kaggle][Kaggle]같은 곳에서 좀 고도화된 데이터 분석을 하려면 numpypandas같은 모듈이 필요합니다. 또 네트워크 분석을 할 때 쓰이는 networkX같은 라이브러리도 추가로 깔아야 사용을 할 수 있습니다.

오랜 기간동안 가상 개발환경을 쓰지 않고 그냥 모듈들을 깔아버렸습니다. 예를 들어 sudo pip install numpy를 터미널 창에 입력하면 numpy가 깔리는데 권장할 만한 방식은 아니라고 알고 있습니다. 실제로 몇 일전에 코드를 다시 돌려봤는데 오류가 주욱 뜨면서 돌아가지 않았습니다.

terminal_error

파이썬에서 random forest 함수를 돌려보려했는데 필요한 모듈에 무언가 문제가 있었던 모양입니다. 오류 내용을 구글에서 찾아봤는데 몇가지 방법을 시도해봤지만 별 성과는 없었습니다. 파이썬에도 버전이 여러개가 있고 모듈도 여러개가 있는데 기존에 깔려있던 것과 새로 깔린 내용이 충돌을 일으킨 모양입니다.

이럴 때 virtualenv로 가상 개발환경을 만들면 아주 편리하게 작업을 할 수 있습니다. virtualenv는 프로젝트에 따라서 필요한 개발환경을 분리해서 사용할 수 있도록 도와줍니다. 예를 들어 A라는 프로젝트에서 파이썬 모듈 a가 필요하고 B 프로젝트에서는 모듈 b가 필요하다고 합시다. 그리고 만약 모듈 a와 b가 어떤 이유로 인해서 같이 깔렸을 때 충돌한다면 A와 B를 같이 돌리는데 오류가 날 겁니다. 이 때 virtualenv로 환경을 따로 따로 구축해버리면 머리아프게 구글 검색할 이유가 없어지겠죠.

virtualenv를 사용하는 방법은 위의 링크에도 소개되어 있지만 간단히 이렿습니다.

  1. pip install virtualenv - 터미널을 열고 옆에 명령을 입력합니다. 만약 pip가 없다고 나오면 sudo easy_install pip를 쳐보세요.
  2. cd sample_project_folder - 가상 개발환경을 구축할 프로젝트 폴더로 이동합니다.
  3. virtualenv venv - 이 명령어는 현재 폴더안에 파이썬 실행 파일과 pip 라이브러리의 복사본이 담긴 폴더를 만듭니다. 이를 통해 가상 개발환경에서 다른 모듈을 설치할 수 있게 됩니다.
  4. source venv/bin/activate - 가상 개발환경을 로딩합니다. 가상개발환경으로 들어가게 되면 terminal 왼편에 (venv)가 표기됩니다.
  5. pip install requests - 이제 가상개발환경에 필요한 모듈을 설치합니다. 여기서는 예를 들어 requests라는 모듈을 깔아봤습니다.
  6. deactivate - 이 커맨드를 입력하면 가상 개발환경에서 빠져나옵니다.

가상 개발환경을 만들어 random forest 알고리즘을 돌리기 위해서 필요한 numpy, pandas, scipy 등을 깔고, python random_forest_v2.py를 돌려 파이썬 스크립트를 실행합니다.

terminal_success

정상적으로 돌아갔습니다!


마치며

위에 발생한 오류에 대한 해답은 분명 어딘가 있을 겁니다. 스택 오버플로우에 보면 파이썬과 관련 모듈이 저장되어있는 경로가 잘못되었다거나 엉뚱한데 설치되어있을거라 했는데 영어의 압박도 압박이지만 저같은 초보자가 이해하기엔 기술적으로 어려웠습니다. 경로가 어쨌건 일단 virtualenv를 활용한 가상 개발환경에서 코드가 돌아간다는 걸 확인했으니 일단은 코드를 돌리고 좀 더 내공이 쌓이면 다시 문제를 살펴봐야겠습니다.

[Kaggle]