Windows에서 PyTorch, KoNLPy, mecab-ko 설치하기

June Oh
7 min readApr 22, 2018

--

(수정: 글을 올린 시점 이후인 2018–04–25에 배포된 PyTorch v0.4.0부터는 공식적인 Windows 지원이 추가되었습니다. 그러나 KoNLPy와 mecab-ko 사이의 호환에는 여전히 WSL 환경이 필요합니다.)

PyTorch는 Windows 환경을 아직 공식 지원하지 않습니다. 하지만 peterjc123이라는 개발자 한 분이 Windows용으로 컴파일해놓은 바이너리가 존재하고, 작년 여름 즈음부터는 GPU 연산도 지원하게 되었습니다.

그러나 안타깝게도 한국어 자연어 처리 패키지인 KoNLPy와 형태소 분석기인 mecab-ko가 Windows에서는 서로 호환되지 않는 문제가 있습니다. 따라서 이 글에서는 Windows 10(64bit)에 추가된 WSL(Windows Subsystem for Linux)을 통해서 Windows에 Ubuntu를 설치하고, 그 위에 PyTorch 및 KoNLPy, mecab-ko를 설치하는 법을 설명하려 합니다. 단, WSL에서는 아직 GPU 연산을 지원하지 않는 문제가 있다는 점은 양해해주시길 바랍니다.

Ubuntu 설치

시작 메뉴에서 Windows 기능 켜기/끄기를 검색하여 열고, Linux용 Windows 하위 시스템을 체크한 뒤 확인을 눌러 WSL 환경을 설치합니다. 재부팅이 필요합니다.

다시 시작 메뉴에서 이번에는 Microsoft Store를 열고, Ubuntu를 검색하여 설치합니다.

이제 시작 메뉴에 생성된 Ubuntu 아이콘을 클릭하여 Bash shell을 실행시키고, 최초의 사용자 계정을 등록하면 설치는 끝납니다.

A. Conda, PyTorch, KoNLPy, mecab-ko 한방에 설치

바쁘신 분들을 위해 Ubuntu 설치 이후의 과정을 자동화한 스크립트를 만들어 놓았습니다. 그냥 Bash shell에서 다음 명령어만 실행해주시고, 중간에 비밀번호만 한번 입력해주신 후 기다려주시면 설치가 완료됩니다.

bash <(curl -s https://raw.githubusercontent.com/kh-kim/nlp_preprocessing/master/setup.WSL.sh)

B. 하나씩 설치

아직 shell에 익숙하지 못하신 분들은, 한 단계씩 따라가며 과정을 이해해보시는 것도 좋습니다.

Miniconda 설치

PyTorch는 패키지 및 가상환경 관리자인 Conda를 통한 설치를 권장합니다. 이를 위해 Conda의 라이트 버전이라고 볼 수 있는 Miniconda를 설치하려 합니다.

Bash shell을 열고, 재부팅하면 비워지는 리눅스의 임시 디렉토리로 이동합니다.

cd /tmp

Miniconda 설치 스크립트를 다운로드 받습니다.

curl -o miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

다운로드된 스크립트 파일(miniconda.sh)을 실행할 수 있도록 권한을 설정합니다.

chmod +x ./miniconda.sh

사용권 자동 동의 옵션으로 ~/.conda/ 디렉토리에 설치합니다.

./miniconda.sh -b -p ~/.conda

설치한 Miniconda의 명령어들을 사용할 수 있도록, PATH 환경변수에 디렉토리를 자동으로 등록하는 코드를 ~/.bashrc 파일에 심어놓습니다. ~/.bashrc 파일은 Bash shell을 열 때마다 자동으로 불러들여집니다.

echo 'export PATH="$HOME/.conda/bin:$PATH"' >> $HOME/.bashrc

환경변수가 적용되도록 Bash shell을 껐다 키거나, 또는 다음 명령어로 수동으로 불러들입니다.

source ~/.bashrc

PyTorch 설치

Miniconda를 통해 konlpy라는 가상환경을 만들고, 그 안에 PyTorch를 설치하려 합니다.

Python 3.6 버전에 NumPy등 패키지들을 포함하는 가상환경을 생성합니다.

conda create -y --name konlpy python=3.6 numpy pyyaml scipy ipython mkl

생성한 가상환경에 진입합니다. 이 명령어는 이후에도 PyTorch 및 KoNLPy를 사용하기 위해 필요하니 기억해두면 좋습니다.

source activate konlpy

이제 Python 패키지 관리자인 PIP을 통해 PyTorch를 설치합니다.

pip install torch

KoNLPy 및 mecab-ko 설치

이제 최종 목표인 KoNLPy와 mecab-ko만 남았습니다.

우선 설치에 필요한 Ubuntu 패키지들을 설치합니다. KoNLPy 홈페이지에서는 openjdk-7-jdk를 설치하라고 안내하지만, 해당 패키지는 Ubuntu 16.04 공식 저장소에서 더 이상 제공하지 않기 때문에, 그 다음 버전인 openjdk-8-jdk를 설치합니다.

sudo apt-get update && sudo apt-get install -y openjdk-8-jdk g++ build-essential autoconf automake

이제 KoNLPy를 설치할 준비가 되었습니다. PIP을 사용합니다.

pip install jpype1 konlpy

마지막으로 mecab-ko를 설치합니다.

bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

여기서 문제가 발생합니다. 설치가 잘된 것처럼 보이지만, 중간에 로그를 보면 mecab-ko-dic 컴파일 간 libmecab.so.2를 찾을 수 없다는 메세지가 있습니다. 해당 파일은 이미 설치되었지만 아직 링크가 등록되지 않아서 그러니, 수동으로 링크를 최신화하고 다시 위의 mecab-ko 설치를 진행하면 됩니다. (위의 setup.WSL.sh에서는 mecab-ko-dic 설치 전 링크를 최신화하는 코드가 포함되어있습니다.)

sudo ldconfig

시험

이제 제대로 설치가 되었는지 확인해봅시다.

Python console을 실행합니다.

python

KoNLPy의 Mecab 클래스를 불러옵니다.

from konlpy.tag import Mecab

Mecab 클래스 객체를 생성합니다.

mecab = Mecab()

시험 문장을 돌려봅니다.

print(mecab.morphs('영등포구청역에 있는 맛집 좀 알려주세요.'))

제대로 되었다면, 아마 다음과 비슷하게 형태소가 구분된 문장이 출력될 겁니다.

['영등포구', '청역', '에', '있', '는', '맛집', '좀', '알려', '주', '세요', '.']

이제 한국어 분석을 위한 환경은 모두 준비되었습니다!

매번 Bash shell을 사용하시기 불편한 분들은 PyCharm등의 IDE를 WSL의 Python 환경과 연결시킬 수도 있는데, 자세한 방법은 다음 글에서 설명해드리겠습니다.

아울러 WSL의 Python은 Windows 환경( cmd.exe에 peterjc123님의 PyTorch를 설치한 경우)과 분리되어 있기에, 서로 충돌의 걱정 없이 사용하실 수 있습니다.

--

--