윈도우에서 PyCharm을 이용한 Python 개발 및 디버깅을 위한 포스팅 3번째
오늘은 virtualenv를 사용하는 방법을 알아보려한다.
선행작업:
윈도우 Python, easy_install, pip 설치
개별적인 개발환경을 구축하기 위해 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 설치에 대한 내용은 끗