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
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」に変更してインストール。
何とかインストール成功しました。