반응형

Windows에서 pip로 패키지를 설치할 때 에러가 발생하는 경우가 많습니다. 예를 들어 다음은 notebook 패키지를 설치할 때 의존 패키지 중 MarkupSafe에서 에러가 난 상황입니다. 에러 메시지를 잘 보면 "Running setup.py install for MarkupSafe ..." 부분이 error로 표시됩니다.

C:Usersdojang>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 파일을 설치해야 합니다. 먼저 웹 브라우저를 실행하고 다음 주소로 이동합니다.

  • Python Extension Packages for Windows
    http://www.lfd.uci.edu/~gohlke/pythonlibs/

웹 사이트가 열리면 Ctrl+F를 눌러서 방금 에러가 발생했던 패키지인 MarkupSafe를 검색합니다. 그다음에 MarkupSafe가 나오면 링크를 클릭합니다.

▼ 그림 48-4 Unofficial Windows Binaries for Python Extension Packages에서 패키지 검색
그림 48 4 Unofficial Windows Binaries for Python Extension Packages에서 패키지 검색

링크를 클릭하면 MarkupSafe 패키지 항목으로 이동합니다. 여기에 MarkupSafe 패키지의 whl 파일들이 있는데 자신의 파이썬 버전과 비트수에 맞는 whl 파일을 다운로드합니다.

▼ 그림 48-5 Unofficial Windows Binaries for Python Extension Packages에서 whl 파일 받기
그림 48 5 Unofficial Windows Binaries for Python Extension Packages에서 whl 파일 받기

whl 파일은 패키지이름-패키지버전-파이썬버전-ABI태그-플랫폼태그.whl 형식으로 되어 있습니다. 예를 들어 cp36과 cp36m은 파이썬 3.6이라는 뜻이고, win32는 32비트 Windows, win_amd64는 64비트 Windows라는 뜻입니다(이후 새 파이썬 버전이 나오면 해당 버전에 맞춰서 새 whl 파일이 올라옵니다).

현재 설치된 파이썬의 버전을 확인하려면 명령 프롬프트(PowerShell)에서 python -V를 입력합니다.

C:Usersdojang>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:Usersdojang>pip uninstall -y MarkupSafe
Uninstalling MarkupSafe-1.0:
  Successfully uninstalled MarkupSafe-1.0

이제 pip로 whl 파일을 설치 해줍니다(파일을 다운로드한 경로는 C:₩Users₩dojang₩Downloads라고 가정).

C:Usersdojang>pip install C:UsersdojangDownloadsMarkupSafe-1.0-cp36-cp36m-win32.whl
Processing c:\usersdojang\downloadsmarkupsafe-1.0-cp36-cp36m-win32.whl
Installing collected packages: MarkupSafe
Successfully installed MarkupSafe-1.0

여기서 끝이 아닙니다. 처음에 notebook 패키지를 설치하던 중간에 에러가 발생했으므로 notebook 패키지가 완전히 설치되지 않았습니다. 따라서 다음과 같이 notebook 패키지를 다시 설치해줍니다.

C:Usersdojang>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로 패키지를 설치할 때 에러가 발생하는 문제를 해결할 수 있습니다.



반응형

'Program > Python' 카테고리의 다른 글

numpy 함수  (0) 2017.12.02
numpy meshgrid  (0) 2017.12.02
python 가상환경  (0) 2017.11.21
파이썬 내장함수  (0) 2017.11.20
비트 연산자 사용하기  (0) 2017.11.20

+ Recent posts