47.12 Windows에서 패키지 설치 에러 해결하기
Windows에서 pip로 패키지를 설치할 때 에러가 발생하는 경우가 많습니다. 예를 들어 다음은 notebook 패키지를 설치할 때 의존 패키지 중 MarkupSafe에서 에러가 난 상황입니다. 에러 메시지를 잘 보면 "Running setup.py install for MarkupSafe ..." 부분이 error로 표시됩니다.
C:\Users\dojang>pip install notebook ...생략... Running setup.py install for simplegeneric ... done Running setup.py install for pandocfilters ... done Running setup.py install for MarkupSafe ... error Exception: Traceback (most recent call last): ...생략... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 68: invalid start byte
이 문제를 해결하려면 MarkupSafe 패키지를 Windows 전용으로 만든 whl 파일을 설치해야 합니다(whl은 파이썬의 패키지 포맷이며 wheel의 약자인 whl을 확장자로 사용). 먼저 웹 브라우저를 실행하고 다음 주소로 이동합니다.
- Python Extension Packages for Windows
http://www.lfd.uci.edu/~gohlke/pythonlibs/
웹 사이트가 열리면 Ctrl+F를 눌러서 방금 에러가 발생했던 패키지인 MarkupSafe를 검색합니다. 그다음에 MarkupSafe가 나오면 링크를 클릭합니다.
![](https://dojang.io/pluginfile.php/14100/mod_page/content/2/047007_.png)
링크를 클릭하면 MarkupSafe 패키지 항목으로 이동합니다. 여기에 MarkupSafe 패키지의 whl 파일들이 있는데 자신의 파이썬 버전과 플랫폼에 맞는 whl 파일을 다운로드합니다.
![](https://dojang.io/pluginfile.php/14100/mod_page/content/2/047008_.png)
whl 파일은 패키지이름-패키지버전-파이썬버전-ABI태그-플랫폼태그.whl 형식으로 되어 있습니다. 예를 들어 cp36과 cp36m은 파이썬 3.6이라는 뜻이고, win32는 32비트 Windows, win_amd64는 64비트 Windows라는 뜻입니다(이후 새 파이썬 버전이 나오면 해당 버전에 맞춰서 새 whl 파일이 올라옵니다).
현재 설치된 파이썬의 버전을 확인하려면 명령 프롬프트(PowerShell)에서 python -V를 입력합니다.
C:\Users\dojang>python -V Python 3.6.0
그리고 파이썬 플랫폼을 확인하려면 파이썬 셸에서 다음과 같이 실행합니다.
파이썬이 32비트일 경우
>>> import platform >>> platform.architecture() ('32bit', 'WindowsPE')
파이썬이 64비트일 경우
>>> import platform >>> platform.architecture() ('64bit', 'WindowsPE')
여기서는 파이썬 버전 3.6에 32비트라고 가정하고 MarkupSafe-1.0-cp36-cp36m-win32.whl을 받아서 설치하겠습니다(MarkupSafe의 버전은 시간이 지나면 달라질 수 있습니다). 받은 whl 파일을 설치하기 전에 앞에서 설치할 때 에러가 발생한 MarkupSafe 패키지를 삭제합니다.
C:\Users\dojang>pip uninstall -y MarkupSafe Uninstalling MarkupSafe-1.0: Successfully uninstalled MarkupSafe-1.0
이제 pip로 whl 파일을 설치 해줍니다(파일을 다운로드한 경로는 C:\Users\dojang\Downloads라고 가정).
C:\Users\dojang>pip install C:\Users\dojang\Downloads\MarkupSafe-1.0-cp36-cp36m-win32.whl Processing c:\users\dojang\downloads\markupsafe-1.0-cp36-cp36m-win32.whl Installing collected packages: MarkupSafe Successfully installed MarkupSafe-1.0
여기서 끝이 아닙니다. 처음에 notebook 패키지를 설치하던 중간에 에러가 발생했으므로 notebook 패키지가 완전히 설치되지 않았습니다. 따라서 다음과 같이 notebook 패키지를 다시 설치해줍니다.
C:\Users\dojang>pip install notebook Collecting notebook ...생략... Installing collected packages: jinja2, mistune, nbconvert, notebook Successfully installed jinja2-2.9.6 mistune-0.7.4 nbconvert-5.1.1 notebook-5.0.0
whl 파일로 MarkupSafe 패키지를 설치해 놓았으므로 notebook 패키지를 설치할 때 에러가 발생하지 않습니다. 이런 방식으로 Windows에서 pip로 패키지를 설치할 때 에러가 발생하는 문제를 해결할 수 있습니다.