Windows、Python2.7、VirtualEnv で MySql-Python 1.2.5 をインストールする時のエラーの話

VirtualEnv を起動して、mysql-python 1.2.5 の インストールを試みる。

(phrase_env) c:\Programs\venv\phrase_env>pip install mysql-python==1.2.5

エラーが発生し、VisualC++のコンパイラが必要だ!的なログが、以下のURLとともにはかれたため、指示に従い、ダウンロードし、インストール。

Microsoft Visual C++ Compiler for Python 2.7

https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266

 

気を取り直して再チャレンジ。

はい。今度は、ヘッダファイルが見つかりません的なエラー。

(phrase_env) c:\Programs\venv\phrase_env>pip install mysql-python==1.2.5
Collecting mysql-python==1.2.5
  Using cached MySQL-python-1.2.5.zip
Installing collected packages: mysql-python
  Running setup.py install for mysql-python
    building '_mysql' extension
    C:\Users\piroto\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" -IC:\python27\include -Ic:\Programs\venv\phrase_env\PC /Tc_mysql.c /Fobuild\temp.win-amd64-2.7\Release\_mysql.obj /Zl    _mysql.c    _mysql.c(42)
     : (略)
    fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory    error: command 'C:\\Users\\piroto\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2    Complete output from command c:\Programs\venv\phrase_env\Scripts\python.exe -c "import setuptools, tokenize;__file__='c:\\users\\piroto\\appdata\\local\\temp\\pip-build-jmdxif\\mysql-python\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\piroto\appdata\local\temp\pip-qwlwk5-record\install-record.txt --single-version-externally-managed --compile --install-headers c:\Programs\venv\phrase_env\include\site\python2.7:    running install
    running build
    creating build\temp.win-amd64-2.7
    creating build\temp.win-amd64-2.7\Release
    C:\Users\piroto\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" -IC:\python27\include -Ic:\Programs\venv\phrase_env\PC /Tc_mysql.c /Fobuild\temp.win-amd64-2.7\Release\_mysql.obj /Zl
    _mysql.c
    _mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
    error: command 'C:\\Users\\piroto\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2
    ----------------------------------------
    Command "c:\Programs\venv\phrase_env\Scripts\python.exe -c "import setuptools, tokenize;__file__='c:\\users\\piroto\\appdata\\local\\temp\\pip-build-jmdxif\\mysql-python\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\piroto\appdata\local\temp\pip-qwlwk5-record\install-record.txt --single-version-externally-managed --compile --install-headers c:\Programs\venv\phrase_env\include\site\python2.7" failed with error code 1 in c:\users\piroto\appdata\local\temp\pip-build-jmdxif\mysql-python

この手の作業は、Linuxで発生しても、ままあることと思えるのだけれど、Windowsだとなぜだがなんか不安になる。

安定の StackOverflow に同じ問題が。

http://stackoverflow.com/questions/1972259/mysql-python-install-problem-using-virtualenv-windows-pip

上のエラーログを見てもらえるとわかるのだが、探しに行っているバージョンのコネクターがインストールされていないため、インストールする。

http://dev.mysql.com/downloads/connector/c/6.0.html#downloads

mysql-python_error02

had to install the connector for x64 and move the MySql folder from the 'Program Files' to the 'Program Files (x86)' directory since that's where the build script was looking for it –  Charlie Dec 9 '14 at 22:34

一点、注意する必要があるのが、上記のログを見るとわかるのだが、Program Files (x86) 以下の MySQL ディレクトリを探しに行っているため、64bit のWindows に64bit版のコネクタをデフォルトのままインストールすると、違う場所(Program FIles 以下)にインストールされてしまうため、依然として見つからない。

かといって、32bit版のコネクターをインストールすると、以下のように別のエラーが発生する。

    _mysql.obj : error LNK2019: unresolved external symbol mysql_rollback referenced in function _mysql_ConnectionObject_rollback
    _mysql.obj : error LNK2019: unresolved external symbol mysql_next_result referenced in function _mysql_ConnectionObject_next_result
    _mysql.obj : error LNK2019: unresolved external symbol mysql_set_server_option referenced in function _mysql_ConnectionObject_set_server_option
    _mysql.obj : error LNK2019: unresolved external symbol mysql_sqlstate referenced in function _mysql_ConnectionObject_sqlstate

 

というわけで、64bit のWindowsにインストールする場合、インストーラが起動したら、「Custom」インストールを選択し、インストールするディレクトリを、デフォルトの「Program Files (x86)」から 「Program Files」に変更してインストール。

mysql-python_error01

何とかインストール成功しました。

mysql-python_error03