一, 背景
python 项目中需要操作 MySQL, 于是运行:
pip install MySQL-python
报一连串的错误, 前面的错误根据提示都好解决, 但被下面的错误一直卡住, 好一翻折腾才解决, 所以在此记录以备忘.
Cannot open include file: 'config-win.h': No such file or directory" while installing MySQL-python
二, 安装
1. 安装 64 位版本的 python
https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi
2. 安装 VCForPython
去微软官网下载
没有安装时会报如下错误:
- C:\Users\admin\Desktop>pip install MySQL-python
- Collecting MySQL-python
- Using cached MySQL-python-1.2.5.zip
- Installing collected packages: MySQL-python
- Running setup.py install for MySQL-python ... error
- Complete output from command c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\admin\\appdata\\local\\temp\\pip-build-srpbqq\\mysql-python\\setup.py';f=getattr(tokenize,'open', open)(__file__);code=f.read().replace('\r\n','\n');f.close();exec(compile(code, __file__,'exec'))" install --record c:\users\admin\appdata\local\temp\pip-6qgvvl-record\install-record.txt --single-version-externally-managed --compile:
- running install
- running build
- running build_py
- creating build
- creating build\lib.win-amd64-2.7
- copying _mysql_exceptions.py -> build\lib.win-amd64-2.7
- creating build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\__init__.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\converters.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\connections.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\cursors.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\release.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\times.py -> build\lib.win-amd64-2.7\MySQLdb
- creating build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\__init__.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\CR.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\ER.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\FLAG.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\REFRESH.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- running build_ext
- building '_mysql' extension
- error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27
- ----------------------------------------
- Command "c:\python27\python.exe -u -c"import setuptools, tokenize;__file__='c:\\users\\admin\\appdata\\local\\temp\\pip-build-srpbqq\\mysql-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))"install --record c:\users\admin\appdata\local\temp\pip-6qgvvl-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\admin\appdata\local\temp\pip-build-srpbqq\MySQL-python
- C:\Users\admin\Desktop>
根据错误提示, 访问: http://aka.ms/vcpython27
下载相应版本的 VCForPython 安装, 再次安装 MySQL-python
3. 安装 MySQL-connector-python-2.1.7-py2.7-Windows-x86-64bit.msi
https://cdn.mysql.com//Downloads/Connector-Python/mysql-connector-python-2.1.7-py2.7-windows-x86-64bit.msi
4. 安装 MySQL-connector-c-6.0.2-winx64.msi
https://cdn.mysql.com//Downloads/Connector-C/mysql-connector-c-6.0.2-winx64.msi
没有安装 [MySQL-connector-python] 与 [MySQL-connector-c-6.0.2] 时, 会报如下错误:
- C:\Users\admin\Desktop>pip install MySQL-python
- Collecting MySQL-python
- Using cached MySQL-python-1.2.5.zip
- Installing collected packages: MySQL-python
- Running setup.py install for MySQL-python ... error
- Complete output from command c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\admin\\appdata\\local\\temp\\pip-build-r8dkiw\\mysql-python\\setup.py';f=getattr(tokenize,'open', open)(__file__);code=f.read().replace('\r\n','\n');f.close();exec(compile(code, __file__,'exec'))" install --record c:\users\admin\appdata\local\temp\pip-srrfzx-record\install-record.txt --single-version-externally-managed --compile:
- running install
- running build
- running build_py
- creating build
- creating build\lib.win-amd64-2.7
- copying _mysql_exceptions.py -> build\lib.win-amd64-2.7
- creating build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\__init__.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\converters.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\connections.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\cursors.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\release.py -> build\lib.win-amd64-2.7\MySQLdb
- copying MySQLdb\times.py -> build\lib.win-amd64-2.7\MySQLdb
- creating build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\__init__.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\CR.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\ER.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\FLAG.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\REFRESH.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- copying MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-2.7\MySQLdb\constants
- running build_ext
- building '_mysql' extension
- creating build\temp.win-amd64-2.7
- creating build\temp.win-amd64-2.7\Release
- C:\Users\admin\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:\python27\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\\admin\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2
- ----------------------------------------
- Command "c:\python27\python.exe -u -c"import setuptools, tokenize;__file__='c:\\users\\admin\\appdata\\local\\temp\\pip-build-r8dkiw\\mysql-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))"install --record c:\users\admin\appdata\local\temp\pip-srrfzx-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\admin\appdata\local\temp\pip-build-r8dkiw\MySQL-python\
- 5. MySQL-python-1.2.5.zip
- https://pypi.python.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
注意: 没有安装 [MySQL-connector-python] 与 [MySQL-connector-c-6.0.2] 时: 此步骤会一直报错:
> Cannot open include file: 'config-win.h': No such file or directory" while installing MySQL-python
注意: 即使已经安装了 [MySQL-connector-python] 与 [MySQL-connector-c-6.0.2] , 也可能会报上面的错误
原因: pypi 上提供的 MySQL-python 包依赖 32 位的 MySQL-connector-c-6.0.2 包, 因为我们前面只安装了 64 位的版本, 所有一直找不到 MySQL-connector-c-6.0.2 而报上面的错误
解决方法一:
去 MySQL 官网下载 32 位的 MySQL-connector-c-6.0.2, 同时安装 32 位版本与 64 位版本, 再运行: [亲测, 失败, 但此方法应该可以, 原因本人没有深究]
- pip install MySQL-python
- 1
解决方法二:
下载 MySQL-python-1.2.5 的源码, 解压并修改文件 [MySQL-python-1.2.5/site.cfg] , 找到如下一行的路径, 将其修改成如下第二行 (修改引用版本, 将 32 位指向 64 位), 再运行 python setup.py install 安装 [亲测通过] (前提: 安装 64 位的 MySQL-connector-c-6.0.2,)
- connector = C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2
- connector = C:\Program Files\MySQL\MySQL Connector C 6.0.2
- # 源码安装
- cd MySQL-python-1.2.5
- python setup.py install
来源: http://www.bubuko.com/infodetail-2921244.html