在安装 mysql-python 时“无法打开包含文件: ‘ config-win.h’: 没有这样的文件或目录”

我正在尝试使用 pip on windows 在 Virtual alenv 中安装 mysql-python。起初,我得到了同样的错误 在这里报道,但那里的答案对我也适用。现在我得到如下错误:

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

如果我将 symlink (Win7)链接到我的常规(而不是 viralenv 的) python 的站点包/MySQLdb dir,我会得到

Error loading MySQLdb module: No module named _mysql

我有点不知所措,有什么建议吗?

120689 次浏览

为 mysql 安装 dev bit 消除了我的 config-win.h错误,并抛出了另一个错误。我在这篇文章中找到了问题的答案: http://www.fuyun.org/2009/12/install-mysql-for-python-on-windows/

我把文件“ c: Python26 Lib distutils msvc9compiler.py”复制到我的 viralenv 中,进行了上面链接中建议的编辑,一切都很顺利。

最有可能的答案是安装 MySQLDeveloperBuild 并在配置过程中选择“ C headerslibs”选项。(正如本文所报道的: 在 rationalpie.wordpress.com 上为 Python 构建 MySQldb)

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

试试 ActivePython,

pypm -E C:\myvirtualenv install mysql-python

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

在5.5 config-win. 中,实际上已经移动到了窗口中的 Connector 单独文件夹:

C: Program Files MySQL Connector C 6.0.2 include

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

返回文章页面

# 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 作者将改变行为。


差点忘了说,同样地,我们也需要为 libs 增加类似的条目:

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' ]
...

好吧,如果你仍然有问题,你可以从 http://code.google.com/p/soemin/downloads/detail?name=MySQL-python-1.2.3.win32-py2.7.exe下载安装程序

我对 MySQLdb 也很头疼。

为什么不使用官方的 MySQL Python 连接器?

easy_install mysql-connector-python

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

文件: Http://dev.mysql.com/doc/refman/5.5/en/connector-python.html

我所要做的就是访问 Oracle,下载 MySQL Connector C 6.0.2(新的不管用!)并进行典型的安装。

Https://downloads.mysql.com/archives/c-c/

一定要通过自定义安装包括所有可选的附加组件(额外的二进制文件) ,没有这些它就不能在 win64.msi 中工作

完成之后,我进入 pycharms,选择要安装的 MySQL-python > = 1.2.4包,它工作得很好。不需要更新任何配置或类似的东西。这对我来说是最简单的版本。

希望能有帮助

接受的解决方案似乎不再适用于较新版本的 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中创建的符号链接

公认的答案已经过时了。其中的一些建议已经包含在包中,但是我仍然得到关于丢失 config-win.h & mysqlclient.lib 的错误。

  • 安装 Mysql-Connector-c-6.0.2-win32. msi

    还有一个针对连接器的 zip 文件,但是没有工作,因为 mysqlclient.liblib目录中,而安装程序期望 不是黑客 site.cfg 或 setup _ windows.py,而是 Msi 完成任务。

  • Pip install mysql-python

另外,由于我不再使用 MySQL,我的答案可能也过时了。

如果 pip 未能安装“ MySQLdb”,一个解决方案是首先从这个链接下载并安装到您的计算机上

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

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

c:\Python27\Lib\site-packages(或与系统 Python 类似的路径)到 c:\my_virtenv\Lib\site-packages(虚拟连接的路径)

在我的例子中,我的修复程序是复制从 mysql-connect-c-6.0.2-win32创建的文件夹。Msi (在前一篇文章中从用户名缓冲区引用) ,位于 c: Program Files MySQL MySQL Connector C 6.0.2,用 Program Files (x86)创建一个新路径,并粘贴其中的内容,因为安装没有正确检查32位和64位机器之间。

因此,新的路径是 C: Program Files (x86) MySQL MySQL Connector C 6.0.2。这是安装程序要查找的路径,所以我粘贴了这些文件以帮助安装程序查找这些文件,这导致了关于丢失 config-win 的错误。哦

我的确是按照 Bugagotti 的回答做的,而且它在 mysql-python-1.2.5的 windows 系统(Win764位,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'

然后终于成功了。

我遵循了沈的方法。

但在我的例子中,我将连接器更改为

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

而 library _ dirs 被更改为

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

因为我没有一个 vs9目录。它工作,但 我不知道为什么

我已经安装了 vs2012,连接器的 lib 目录只有 vs10vs11,其中 vs11不能工作。我安装的 VCForPyhton27.mi 似乎支持 vs9

不管怎样,这个有用,如果你想冒险,你可以试试。

我知道这篇文章是超级老,但它仍然是未来在谷歌的最高点击,所以我会添加一些更多的信息,这个问题。

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

我使用的是最新的 ConnectorC6.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 包安装没有任何问题。

我在 Windows上使用的解决方案: 安装 MySQL 连接器/C 6.0.232位和 64位版本。打开 Command Prompt并运行:

pip install mysql-python

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

对我来说,下面的方法解决了这个问题(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. 从这里下载

  2. 然后通过 pip 安装程序安装这个 whl。Shift + 右击下载文件夹,选择 Open powershell here。然后使用命令安装: pip install package_name.whl

最简单的解决方案:

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

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

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

然后打字

pip install MySQL-python

一定会成功的。

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 system 32 > 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“ C: Program Files MySQL MySQL Connector C 6.0.2 include” 系统找不到指定的路径。

https://dev.mysql.com/downloads/connector/c/6.0.html下载连接器的版本 对于我的情况,我已经安装了64位的连接器和我的 Python 是32位。因此,我必须将 MySQL 从程序文件复制到 Program Files (86)

视窗10的步骤:

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