본문 바로가기

Programming/Python

[Python] 윈도우 개발환경 구축 – PyCharm virtualenv

윈도우에서 PyCharm을 이용한 Python 개발 및 디버깅을 위한 포스팅 3번째

오늘은 virtualenv를 사용하는 방법을 알아보려한다.

선행작업:

    윈도우 Python, easy_install, pip 설치

    PyCharm 설치, 설정, 프로젝트 만들기

개별적인 개발환경을 구축하기 위해 virtualenv를 사용한다. 오늘은 그 방법을 알아본다.

 

PyCharm - virtualenv

다른 방법이 있을지도 모르겠지만 내가 성공한 방법으로 포스팅한다.

PyCharm 설치, 설정, 프로젝트 만들기 에서 프로젝트 생성시 Creative VirtualEnv를 사용할 수 있다는 것을 알았지만, 기본 Interpreter를 이용해 프로젝트를 생성했다. 그 프로젝트에 VirtualEnv를 설정해보자.

프로젝트가 열려있는 상태에서

File > Settings > Project: xxxxx > Project Interpreter

톱니바퀴의 설정 버튼을 누르니 Create VirtualEnv가 나타났다.

이름과 위치를 설정하고,

    Inherit global site-packages : 정확히는 모르겠지만 해야 할 것 같다. 아마도 윈도우 Python에 기본으로 설치한 Package들을 사용하겠다는 옵션이 아닐까 생각한다. check 하고 해보자

    Make available to all project : 뭘까? virtualenv는 당연히 재사용할 수 있어야 하지만, 이것을 check 한다면 다른 프로젝트에서는 사용하지 못한다는 말인가. 일단은 check 하지 말고 해보자.

virtualenv가 만들어 졌다.

신기하다. 윈도우에 설치한 Python에서 pip를 이용해 virtualenv를 설치하지 않았는데, PyCarm에서 virtualenv를 만들 수 있다니…

    > pip install virtualenv // 이것을 하지 않았다는 것이다.

툴바에서 프로젝트를 선택하고 Edit Configuration을 선택해보자, Save configuration이 나오는 것 보니 아직 저장이 되지 않은 듯하니 Save 해준다.

만약 툴바가 보이지 않는다면

View > ToolBar

View > ToolButtons

그러면 새로 뜬 창에서 Python Interpreter가 변경된 것을 확인할 수 있다.

그렇다면, Python에서 virtualenv를 설치하고 생성한 환경과 PyCharm이 생성한 virtualenv는 어떻게 다를까?

 

 

윈도우 Python - virtualenv

 

잠깐 PyCharm을 놔두고 cmd 창을 띄워본다.

앞서 윈도우 Python, easy_install, pip 설치 에서 Python PATH, easy_install, pip를 설치했으니, 순수한 Python의 virtualenv를 설치해보자

    > pip install virtualenv

무사히 설치 되었고, virtualenv환경을 만들어 PyCharm에서 만든 그 것과 비교해보자

    > virtualenv venv_test

예제로 만든 virtualenv는 PyCharm에서는 venv_nltk로, python에서는 venv_nltk_test 로 생성했다.

 

언뜻 보기에 virtualenv 폴더간에 차이는 없어 보인다. (용량을 확인해보니 조금 다르기는 하다)

 

그런데…리눅스 virtualenv에서 보던 bin 폴더가 둘 다 안보인다. activate는 어떻게 시키지?

cmd 창에서는 리눅스와는 달리 Scripts\activate를 실행해야한다.

    > Scripts\activate

리눅스에서와 비슷하게 프롬프트가 virtualenv 이름으로 바뀌었다.

PyCharm도 알아서 잘 할 것 같다.

다시 PyCharm으로 돌아가자

 

 

PyCharm - virtualenv package 설치, nltk

PyCharm에서 virtualenv에 package를 설치해보자.

File > Setting 에서 Project Interpreter를 선택하고, Project Interpreter가 virtualenv 임을 확인한다.

이미 설치된 Package 정보가 출력된다. 오른쪽 상단의 초록색 + 버튼을 눌러보자

원하는 package 이름을 입력하니, 자동으로 찾아준다. 버전도 임의로 지정할 수 있고, Options는 어떤 것인지 잘 모르겠다.

난 nltk를 설치해보겠다.

Install Package를 선택한다.

아주 금방 끝이 난다. 물론 다른 Package와는 다르게 nltk는 실제로 사용하려면 추가 작업이 필요하다. (이건 조금 밑에서 다시)

Setting 창에서 Python Interpreter 로 Default를 선택하면, nltk, six 등이 보이지 않는다. virtualenv에 제대로 설치된 것 같다.

 

 

PyCharm - virtualenv, nltk

nltk를 이용한 간단한 코딩을 해보자

간단한 예제를 코딩하고 Run(Shift+F10)을 하니 Error를 뱉어낸다.

오류는, nltk 데이터를 다운받으라는 것이다.

 

그래 받아보자.. nltk 데이터는 인터렉티브 쉘에서 다운로드를 받는데, PyCharm에서는 어떻게 해야할까.

위 그림에서 밑 부분을 자세히 보면 Python Console과 Terminal이 보인다.

Python Coonsole을 선택해보자

인터렉티브 창이 떳는데…의심이 된다. 이거 Default Interpreter냐? virtualenv Interpreter냐?

내가 설치한 Package를 import 해보면 알겠지

>>> import nltk

무사히 import 된다. 정말 의심이 된다면 옆의 Terminal 또는 cmd 창을 띄워 virtualenv 가 아닌 상태에서 import nltk를 해보면 된다.

nltk 데이터를 다운받아 보자.

    >>> nltk.download()

Error : LookupError: unknown encoding: x-windows-949

인코딩 오류인듯하다. 지긋지긋한 CP949

날 시험에 들게 하는군….좋아. 잡아주지

(옆의 Terminal 에서 virtaulenv를 activate 시키고 인터렉티브 쉘에서 nltk.download()를 수행하니 위와 같은 오류는 발생하지 않았다)

File > Setting > Editor > File Encodings > Project Encoding 이 x-windows-949로 설정되어 있다. //이것만 고치면 되는지도 잘 모르겠지만..

 

UTF-8로 바꿔준다.

 

다시 Python Console을 실행하고,

    >>> import nltk

    >>> nltk.download()

이번에는 잘 될 것 같다. matplot이 필요하다고 궁시렁 거리긴하지만…

d) download를 선택하고 all을 입력했다. 텍스트가 좀 깨지는 게 찜찜하다.

이건 리눅스나 어디나 시간이 참 오래 걸리는 구나 싶다.

 

downlaod를 기다리는 동안 pip freeze를 확인해보았다.

옆의 Terminal에서 virtualenv를 activate 시키고,

    >pip freeze

좋다. 이거면 윈도우에서 개발하고 리눅스로 쉽게 이사 갈 수 있겠다.

 

그 사이 download가 완료 되었다. 참고로 우측 하단에 Envent Log에서 Package 설치 등의 로그도 확인할 수 있다.

다시 코드를 돌려보자.

슬슬 지겨워진다. numpy가 필요한 이유는 머지….

word_tokenize()는 동작을 했는데 pos_tag가 동작하지 않는다. numpy가 필요한 이유가 머지..예전에는 안그랬던 것 같은데…

옆의 Terminal에서 실행해보아도 동일하다.

numpy를 깔아보자

 

 

윈도우 Python, PyCharm - virtualenv, numpy

nltk Package를 설치했듯 File > Setting > Project Interpreter를 선택하고 numpy를 설치하려는데…

오류가 또 나네…역시 리눅스가 편하다. 디버깅하면서 Python 개발 한번 해보겠다고 별……아놔

 

error : Unable to find scvarsall.bat

 

구글링을 해보니, 윈도우 Python은 Visual Studio와 관계가 있다고 하는데…(위 에러는 cmd 창에서 진행해도 동일하다)

요점은 C:\Python27\Lib\distutils\msvc9compiler.py 에서 VERSION 변수가 설치된 Visual Studio의 버전과 같아야 한다는 것이다.

결국 Visual Studio 2013을 설치하고…

C:\Python27\Lib\distutils\msvc9compiler.py 파일에 VERSION 변수를 아래와 같이 고치고

#VERSION = get_build_version()

VERSION = 12.0

print ">>>>>>>>>>", VERSION

 

다시 numpy 설치 시도…그러나

Error…

Cmd 창에서도 Error….

    RuntimeError: Broken toolchain: cannot link a simple C program

폭풍 구글링, 원인에 대한 이해 따윈 개나 줘버려. 난 이미 화가 많이 나있어

참조 링크 : http://stackoverflow.com/questions/23064899/compiler-problems-with-pip-during-numpy-install-under-windows-8-1-7-enterprise

다시 한번 C:\Python27\Lib\distutils\msvc9compiler.py 파일을 수정한다.

#mfinfo = self.manifest_get_embed_info(target_desc, ld_args)

    mfinfo = None

mfinfo를 None으로 수정…

다시 numpy 설치 시도…

일단 cmd 창에서 성공!!

 

PyCharm에서도 성공!!

Package 목록에 잘 떠있는거보니 왠지 뿌듯하다.

사실 이 numpy를 설치하기 위해 하루 1시간 정도지만 약 5일간을 삽질했다.

5일간의 방황 끝에…다시 nltk 코드를 돌려볼까. (이제와 생각하니, 모두 nltk 샘플 코드가 동작하지 않았기 때문에 이 사단이 난 것이었다..)

다행이다. 무사히 성공했다.

윈도우에서 Python 개발하며, 디버깅 한번 해보겠다고…참….

 

아무튼, 이걸로 윈도우 Python, PyCharm, virtualenv, package 설치에 대한 내용은 끗