카테고리 없음

WinPython에 바이너리 패키지 설치(mysqlclient 설치 삽질)

wafe 2016. 11. 25. 01:06

파이썬용 DB 마이그레이션 라이브러리인 alembic ( Outsider’s Dev Story alembic tag )을 사용해서 MySQL DB를 관리해보려는 생각으로, 일단 테스트를 해보려고 하니 WinPython Zero Version 에는 MySQL 클라이언트가 설치되어 있지 않다. 그래서 실행하면 mysqldb가 없다고 에러가 난다.

내가 사용한 것은 WinPython 3.5.2.3 64비트 Zero 버전인데, 여기 포함된 CPython 버전은 3.5대이다. 구글링해보니 파이썬 3부터는 mysqlclient를 설치하면 mysqldb 호환이 된다고 한다.

pip install mysqlclient 해서 설치하면 일단 빌드가 필요하다고 나온다 흐아. 얼마전 글에서 WinPython의 빌드 설정을 msvc로 바꿨기 때문에 Visual C++ Build Tools 설치가 필요하다는 메시지가 나온다. 나는 이미 VS 2015가 있기 때문에 VS 2015 설치에서 C++ 관련 항목을 설치해줬다.

그러고 나서 다시 인스톨을 시도하니 아래와 같은 빌드 오류가 난다.

_mysql.c(29): fatal error C1083: Cannot open include file: 'my_config.h': No such file or directory

오류 메시지보다 조금 위의 cl.exe 실행 메시지를 보니, MySQL include 경로 설정이 아래처럼 되어 있는데, 실제로 내 PC에 설치된 MySQL C Connector 와는 버전이 다른 것을 찾고 있다.

"-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include"

구글링을 약간 해서 pip로 설치할 때 커스텀하게 빌드 옵션을 지정할 수 있는 것을 발견하고 아래처럼 실행했다.

> pip install mysqlclient --global-option=build_ext --global-option="-IC:\Program Files\MySQL\MySQL Connector C 6.1.3\include"

이번에는 아까와 다른 빌드 오류가 난다.

C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\stdio.h(1927): fatal error C1189: #error:  Macro definition of snprintf conflicts with Standard Library function declaration

으… 오랜만에 예~~전에 리눅스에 뭐 하나 설치하려면 소스 받아서 make all make install 해야 하는데, 빌드오류 하나하나 잡아가면서 몇 시간씩 걸려 설치하던 악몽이 떠오른다.

Windows 사용하면서 무슨 빌드냐! 분명 바이너리 패키지가 있을거야! 하며 구글링에 돌입, 역시 세상을 아름답게 만들어 주는 분들이 있다.

Unofficial Windows Binaries for Python Extension Packages에서 각종 패키지의 whl 파일을 받을 수 있다. (말이 unofficial 이지… 윈도 사용자에게는 거의 오피셜?!)

사용하는 CPython 버전과 32/64비트 버전에 맞게 whl 파일을 받아서 설치한다.

> pip install d:\downloads\mysqlclient-1.3.8-cp35-cp35m-win_amd64.whl

Processing d:\downloads\mysqlclient-1.3.8-cp35-cp35m-win_amd64.whl
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.8

설치 완료! 해피~!