安装mysql-python时,“无法打开包含文件:'config-win.h':无此文件或目录”


75

我正在尝试在Windows上使用pip在virtualenv中安装mysql-python。起初,我在这里报告了相同的错误,但是那里的答案也对我有用。现在我得到以下错误:

_mysql.c(34) : Fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

如果我将(Win7)符号链接到我的常规(不是virtualenv的)python的site-packages / MySQLdb目录,

Error loading MySQLdb module: No module named _mysql

我在这里不知所措。有指针吗?


注意:从2016年1月1日开始,没有适用于python 3.5.x的MySQL驱动程序,请参见stackoverflow.com/questions/34456770/…因此,此问题仅在Python 3.4之前有效。您仍然可以使用Django 1.9(自2016年1月1日起最新的稳定版本)。
Tomas Tintera '16

MySQL 8.0如何解决这个问题?
勒内Nyffenegger

Answers:


18

mysql 5.5和config-win.h的更新不可见

在5.5 config-win中。实际上已移至Windows中的Connector单独文件夹。即像这样:

C:\ Program Files \ MySQL \ Connector C 6.0.2 \ include

为了克服这个问题,不仅需要下载“ dev bits”(实际上连接了连接器),还需要修改mysqldb安装脚本以添加include文件夹。我已经做了一个快速的肮脏修复。

site.cfg:

# Windows connector libs for MySQL.
connector = C:\Program Files\MySQL\Connector C 6.0.2

在setup_windows.py中找到该行

include_dirs = [ os.path.join(mysql_root, r'include') ]:

并添加:

include_dirs = [ os.path.join(options['connector'], r'include') ]

之后。

难看,但是可以工作,直到mysqldb作者更改行为为止。


几乎忘了提。同样,需要为lib添加类似的附加条目:

library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]

即您的setup_windows.py看起来非常像:

...
library_dirs = [ os.path.join(mysql_root, r'lib\opt') ]
library_dirs = [ os.path.join(options['connector'], r'lib\opt') ]
libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]
include_dirs = [ os.path.join(mysql_root, r'include') ]
include_dirs = [ os.path.join(options['connector'], r'include') ]
extra_compile_args = [ '/Zl' ]
...

谢谢,在我完成您在此处列出的内容之前,它对我不起作用
Mohamed Faramawi 2011年

1
@fastmultiplication我没有那个文件夹,我应该安装什么?
Nicola Peluchetti

4
“开发位是什么?Google甚至都不知道这些是什么:(
Shailen

1
@shailenTJ-有关安装MySQL开发人员版本的信息,请参见下面chodorowicz的回答。
2013年

1
供您参考MySQL Connector C 6.1 ,没有所需的文件。MySQL Connector C 6.0.2有它。因此,您必须在MySQL网站上选择一个旧版本...
Olivier Pons 2015年

91

我要做的就是转到oracle,然后下载MySQL Connector C 6.0.2(较新的版本无效!)并进行典型安装。

https://downloads.mysql.com/archives/cc/

确保通过自定义安装包含所有可选的额外功能(额外二进制文件),如果没有这些选项,则不适用于win64.msi

完成后,我进入pycharms,并选择要安装的MySQL-python> = 1.2.4软件包,它运行良好。无需更新任何配置或类似内容。对于我来说,这是最简单的版本。

希望能帮助到你


10
+1到目前为止,这个问题的最简单答案。请注意,选择适当的驱动程序体系结构(x86 / 64bit)。
k427h1c

3
杜德,您是救生员。由于这个错误,我已经拉了一段时间,我尝试了所有其他更复杂的解决方案。感谢您提供如此简单的解决方案。
turingcomplete 2014年

9
我必须安装x64连接器,并将MySql文件夹从“ Program Files”移动到“ Program Files(x86)”目录,因为这是构建脚本所要查找的位置
Charlie

38
安装MySQL Connector C 6.0.2之后,我尝试了“ pip install MySQL-python”。它仍然显示相同的错误。然后,我将文件夹“ MySQL Connector C 6.0.2”从“ C:\ Program Files \ MySQL”复制到“ C:\ Program Files(x86)\ MySQL”,它运行得很好!
2015年

2
确保下载32位版本的连接器。随着32位连接器将与MySQL的Python 1.2.5 ==工作
埃里克·李

25

可接受的解决方案似乎不再适用于较新版本的mysql-python。安装程序不再提供site.cfg要编辑文件。

如果要安装mysql-python,它将寻找C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include。如果您安装的是64位MySQL,则可以简单地调用:

  1. mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include"
  2. pip install mysql-python
  3. 删除在步骤1中创建的符号链接

10
这是解决方案的正确想法,但是对我而言不起作用。为了解决该问题,我将目录C:\ Program Files \ MySQL \ MySQL Connector C 6.0.2 \复制到C:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.0.2 \。这解决了这个问题对我来说
奥马尔

符号链接方法是好的,但是它必须更宽,因为需要更多文件,因此使用@mklink / d“ C:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.0.2”代替@Gili符号链接\ Program Files \ MySQL \ MySQL Connector C 6.0.2“
Zgr3doo 2015年

2
这对于包含文件有效,但对于lib文件无效。您不能仅将32位lib文件夹符号链接到64位等效文件。最好单独安装32位和64位SQL Connector软件包,而不是符号链接任何东西。
jarmod 2015年

1
这根本不起作用。您只需要下载和安装32位版本。在Windows中损失了两个小时。3s安装在Linux上。多可惜。
奥利维尔·庞斯

在Windows 10上可以使用。lib除了include文件夹之外,我还必须创建指向文件夹的符号链接。
coder.in.me,2016年

15

接受的答案已过期。一些建议已经包含在软件包中,我仍然收到关于缺少config-win.h和mysqlclient.lib的错误。

  • 安装mysql-connector-c-6.0.2-win32.msi

    也有一个用于锥体的zip文件,但是该文件不起作用,因为 mysqlclient.lib它在lib目录中,而安装程序希望在目录中lib/opt。msi可以完成这项工作,而不是黑客site.cfg或setup_windows.py。

  • pip安装mysql-python

PS:由于我不再使用MySQL,因此我的答案也可能已过时。


这也是3.3版吗?如您所述,我先下载并安装了msi,然后安装了pip脚本,但是我仍然在pip中发现有关config-win.h的错误。
瑞安

就我而言,我在安装错误C:\ program files(x86)中看到。我使用Windows 32位,在路径中不使用“(x86)”。这就是我认为为什么错误对我来说正在发生。唯一的问题是我不知道该文件位于何处以更正此路径设置。
瑞安

2
真好 我安装了x64版本,但是没有用。然后,我按照您的建议安装了x86和voilà!我正在使用Python 3.4.3pip install mysql-python并运行它,它可以工作。;-)
Matheus Santos

10

我知道这篇文章已经过时了,但它仍然是Google的热门话题,因此我将向此问题添加更多信息。

我遇到了与OP相同的问题,但是建议的答案似乎都不适合我。主要是因为连接器安装文件夹中的任何位置都不存在“ config-win.h”。

我正在使用最新的Connector C 6.1.6,因为这是MySQL安装程序建议的。

但是,最新的MySQL-python软件包(1.2.5)似乎不支持此功能。尝试安装时,我可以看到它正在明确寻找C Connector 6.0.2。

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

因此,通过从https://dev.mysql.com/downloads/file/?id=378015安装此版本,可以毫无问题地安装python软件包。


截至今天(2017/7/2),这是在Win10 x64和Python 2.7上对我有效的唯一选项。我尝试了连接器6.1,但显然无法正常工作。
BrandonSun '17

谢谢。这篇文章对我有用。Python 2.7 mysql-python-1.2.5
Abhishek L

7

答案很可能是安装MySQL Developer Build并在配置过程中选择“ C headers \ libs”选项。(如本条目中所述:在Rationalpie.wordpress.com上在Windows上为Python构建MySQLdb)

也许更好的解决方案是安装一个预编译的版本:http : //www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe


可以将二进制文件安装到virtualenv吗?当我尝试时,它只给了我系统python安装的选项。
rocketmonkeys 2010年

不,我没有尝试过。在这里,您可以找到一整套针对Windows的预编译MySQLdb软件包-也许它们将为您工作codegood.com/archives/4
chodorowicz 2010年

我还不能在virtualenv中做到这一点(不错,但是是)。我也尝试使用较低版本(1.2.1,1.2.2),但未成功。它依赖于我的应用程序,因此我真的很想看到一个更强大的解决方案。我在此处提交了错误报告sourceforge.net/tracker/…–
Dave

2
我在virtualenv下将easy.install与这个exe文件一起使用,在Windows XP下效果很好
laurent 2012年

@Rocketmonkeys是的,您可以将二进制文件安装到virtualenv中-请参阅可以将Python Windows软件包安装到virtualenvs中吗?
Piotr Dobrogost,2012年

5

如果pip无法安装“ MySQLdb”,则一种解决方法是先从此链接下载并将其安装在计算机上

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

然后将所有Python *和_mysql *文件和目录从系统Python复制到Virtualenv目录:

c:\Python27\Lib\site-packages (或类似的系统Pythonc:\my_virtenv\Lib\site-packages路径)到 (您的virtualenv路径)


该解决方案不再起作用。尝试了所有四种可能性,而全部四种都失败了。
canadiancreed


4

我对MySQLdb也很头疼。

为什么不使用官方的MysQL Python Connector?

easy_install mysql-connector-python

或者您可以从这里下载: http //dev.mysql.com/downloads/connector/python/

文档:http : //dev.mysql.com/doc/refman/5.5/en/connector-python.html


对我来说,这是最简单的解决方案。别忘了使用mysqlconnectorAPI:engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
mtoloo 2015年

该解决方案的工作最适合我,在这两个Python 2和3
twasbrillig

目前,此功能仅支持python最高3.4版本
danio '16

3

为mysql安装dev位摆脱了config-win.h我遇到的错误,并抛出了另一个错误。Failed to load and parse the manifest. The system cannot find the file specified.我在这篇文章中找到了解决我问题的方法:http : //www.fuyun.org/2009/12/install-mysql-for-python-on-windows/

我将文件'C:\ Python26 \ Lib \ distutils \ msvc9compiler.py`复制到我的virtualenv中,进行了上面链接中建议的编辑,一切正常。


1
关于“为mysql安装dev位摆脱了config-win.h错误”的快速问题。什么是“开发位”,我在哪里可以得到它们?=)我有一个类似的问题。
约翰

我也可以。我已经完成了MySQL 5.5的完整安装。固定site.cfg。但是仍然出现错误:_mysql.c(34):致命错误C1083:无法打开包含文件:'config-win.h':没有这样的文件或目录
Shrike

我正在重新安装我的整个python dev安装程序,而此时此刻我被困住了。在世界上哪里可以找到“ config-win.h”文件???
rocketmonkeys 2011年

在上面的链接中对此进行了介绍:“下载MySQL msi安装程序版本,在“自定义安装”中选择“开发人员组件”。默认情况下未安装这些组件。”
星期六

3

最简单的工作解决方案:

下载MySQL Connector C 6.0.2从下面的链接并安装。

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

安装MySQL Connector C 6.0.2后,将文件夹“ MySQL Connector C 6.0.2”从“ C:\ Program Files \ MySQL”复制到“ C:\ Program Files(x86)\ MySQL”。

然后输入

pip install MySQL-python

它肯定会工作。


1
谢谢我,我已经尝试了所有方法,但没有任何效果,但是当我将“ MySQL Connector C”目录从程序文件复制到程序文件(x86)时,问题解决了,您节省了我的时间,再次感谢您
Code_Worm

很高兴为您服务。干杯! @Code_Worm
吉尔·巴乔

2

就我而言,我的解决方法是复制从mysql-connector-c-6.0.2-win32.msi创建的文件夹(从上一篇文章的用户名缓冲区中引用),该文件夹位于c:\ Program Files \ MySQL \ MySQL Connector C 6.0.2,并使用程序文件(x86)创建新路径并将内容粘贴到此处,因为安装未正确检查32位和64位计算机之间的位置。

因此,新路径为C:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.0.2。这是安装程序要查找的路径,因此我将文件粘贴到那里以帮助安装程序查找文件,这导致有关缺少config-win.h的错误。



1

我确实遵循了Bugagotti的回答,并且它在mysql-python-1.2.5的Windows窗口中(Win7 64位,py27并安装了mysql连接器6.1)不起作用,因此我在mysql-python-内部进行了更脏的更改1.2.5:

首先,site.cfg:

connector = C:\Program Files\MySQL\MySQL Connector C 6.1

其次,_mysql.c:

#if defined(MS_WINDOWS)
#include <config-win.h>
#else
#include "my_config.h"
#endif

至:

#if 0 /*defined(MS_WINDOWS)*/
#include <config-win.h>
#else
#include "my_config.h"
#endif

有了这些更改,config_win.h问题就消失了,但是仍然存在链接问题:

LINK : fatal error LNK1181: cannot open input file 'mysqlclient.lib'

为此,我更改了setup_windows.py:

library_dirs = [ os.path.join(connector, r'lib\vs9') ]  ## the original value was r'lib\opt'

然后终于奏效了。


1

我遵循沉明才的方法。

但就我而言,我将连接器更改为

connector = C:\Program Files\MySQL\MySQL Connector.C 6.1

并且library_dirs更改为

library_dirs = [ os.path.join(connector, r'lib\vs10') ]

因为我没有vs9目录。它有效,但是我不知道为什么

我已经安装了vs2012,并且连接器的lib目录中只有vs10and vs11,在其中vs11不起作用。我安装的VCForPyhton27.mis似乎支持vs9

无论如何,这可行。而且,如果您想冒险,可以尝试。



1

对我来说,以下方法解决了该问题(Python 3.5.2; mysqlclient 1.3.9):

  1. 下载最新的MySQL C连接器http://dev.mysql.com/downloads/connector/c/(对我来说是Windows(x86,64位),MSI安装程序)
  2. 复制 c:\Program Files\MySQL\MySQL Connector C 6.0.2\目录到c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\
  3. pip install mysqlclient
  4. [可选]删除 c:\Program Files (x86)\MySQL\MySQL Connector C 6.1\

这里的问题仅适用于x64位安装所有者,因为构建脚本试图查找x86程序文件目录中包括的C连接器。


1
building '_mysql' extension
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
C:\Users\TimHuang\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

如果尝试时看到此消息pip install mysql-python,最简单的方法是复制

C:\Program Files\MySQL\MySQL Connector C 6.0.2C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

我试图创建符号链接,但Windows不断抛出我 C:\WINDOWS\system32>mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include" "C:\Program Files\MySQL\MySQL Connector C 6.0.2\include" The system cannot find the path specified.


1

Window10的步骤:

  • https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
  • 根据python版本和硬件规格下载正确的版本:就我而言, mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl适用于python3.7和Intel CPU。
  • 在您的环境仍处于激活状态时,转到下载文件夹并运行 pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl

0

如果您是在虚拟环境中(无论使用Visual Studio还是其他方式)执行此操作,请尝试 easy_install MySQL-python



0

从下载连接器的版本https://dev.mysql.com/downloads/connector/c/6.0.html 对于我来说,我已经安装了64位连接器,而我的python是32位。所以我不得不将MySQL从程序文件复制到Program Files(86)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.