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

Posted

技术标签:

【中文标题】安装mysql-python时“无法打开包含文件:\'config-win.h\':没有这样的文件或目录”【英文标题】:"Cannot open include file: 'config-win.h': No such file or directory" while installing mysql-python安装mysql-python时“无法打开包含文件:'config-win.h':没有这样的文件或目录” 【发布时间】:2010-12-30 15:28:49 【问题描述】:

我正在尝试在 windows 上使用 pip 在 vi​​rtualenv 中安装 mysql-python。起初,我遇到了同样的错误reported here,但那里的答案也对我有用。现在我收到以下错误:

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

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

Error loading MySQLdb module: No module named _mysql

我在这里很茫然。有什么指点吗?

【问题讨论】:

注意:截至 01/2016 没有适用于 python 3.5.x 的 MySQL 驱动程序,请参阅***.com/questions/34456770/… 所以这个问题仅在 Python 3.4 之前有效。你仍然可以使用 Django 1.9(截至 01/2016 的最新稳定版本)。 MySQL 8.0如何解决这个问题? 【参考方案1】:

我所要做的就是转到 oracle,下载 MySQL 连接器 C 6.0.2(新版本不起作用!)并进行典型安装。

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

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

完成后,我进入 pycharms,并选择 MySQL-python>=1.2.4 包进行安装,效果很好。无需更新任何配置或类似的东西。这是我最简单的版本。

希望对你有帮助

【讨论】:

+1 到目前为止,这个问题最简单的答案。请注意,请选择合适的驱动架构(x86/64bit)。 老兄,你是救命稻草。由于这个错误,我一直在抓头发,我尝试了所有其他更复杂的解决方案。感谢您提供如此简单的解决方案。 我必须为 x64 安装连接器并将 MySql 文件夹从“Program Files”移动到“Program Files (x86)”目录,因为这是构建脚本正在寻找它的地方 安装 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”,它运行良好!! 确保下载 32 位版本的连接器。使用 32 位连接器,它将与 MySQL-python==1.2.5 一起使用【参考方案2】:

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

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

    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" 运行pip install mysql-python 删除在步骤 1 中创建的符号链接

【讨论】:

这是解决方案的正确想法,但它对我不起作用。为了解决这个问题,我将目录 C:\Program Files\MySQL\MySQL Connector C 6.0.2\ 复制到 C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\。这解决了我的问题 符号链接方法很好,但它必须更宽,因为需要更多文件,因此而不是 @Gili 符号链接使用这个 mklink /d "C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2" "C:\Program Files\MySQL\MySQL 连接器 C 6.0.2" 这适用于包含文件,但不适用于 lib 文件。您不能只将 32 位 lib 文件夹符号链接到 64 位等效文件夹。最好单独安装 32 位和 64 位 SQL 连接器包,而不是对任何东西进行符号链接。 这根本不起作用。您需要仅下载和安装 32 位版本。在 Windows 中丢失了两个小时。 3s 安装在 Linux 上。真可惜。 适用于 Windows 10。除了 include 文件夹之外,我还必须创建一个指向 lib 文件夹的符号链接。【参考方案3】:

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

在 5.5 配置中。实际上已移至 Windows 中的连接器单独文件夹。即类似:

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

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

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 作者改变行为之前一直有效。


差点忘了说。以同样的方式需要为库添加类似的附加条目:

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

【讨论】:

非常感谢,在我完成了您在此处列出的内容之前,它对我没有用 @fastmultiplication 我没有那个文件夹,我应该安装什么? 什么是“开发位”?Google 甚至都不知道这些是什么 :( @shailenTJ - 请参阅下面 chodorowicz 关于安装 MySQL 开发人员版本的回答。 供您参考MySQL Connector C 6.1没有所需的文件。 MySQL Connector C 6.0.2 有。所以你必须在MySQL网站上选择一个旧版本...【参考方案4】:

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

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

连接器也有一个 zip 文件,但这不起作用,因为 mysqlclient.liblib 目录中,而安装程序期望 它在lib/opt。而不是破解 site.cfg 或 setup_windows.py, msi 完成了这项工作。

pip install mysql-python

附:由于我不再使用 MySQL,我的回答也可能已经过时了。

【讨论】:

这也适用于 3.3 版吗?我按照你提到的那样下载并安装了 msi 然后 pip 脚本,但我仍然在 pip 中收到关于 config-win.h 丢失的错误。 在我的情况下,我在安装错误 C:\program files (x86) 中看到。我使用 Windows 32 位,它在路径中不使用“(x86)”。这就是我认为错误发生在我身上的原因。唯一的问题是我不知道文件的位置以便更正此路径设置。 不错。我安装了 x64 版本但没有用。然后我按照你的建议安装了 x86,瞧!我正在使用 Python 3.4.3 并运行 pip install mysql-python 并且它有效。 ;-)【参考方案5】:

我知道这篇文章已经很老了,但它仍然是谷歌的热门话题,所以我会在这个问题上添加更多信息。

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

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

然而,最新的 MySQL-python 包 (1.2.5) 似乎不支持这一点。尝试安装它时,我可以看到它正在明确寻找 C 连接器 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的连接器我试过了,但是显然不行。 谢谢。这篇文章对我有用。 Python 2.7 mysql-python-1.2.5【参考方案6】:

最可能的答案是安装 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 的选项。 不,我没试过。在这里你可以找到一整套用于 Windows 的预编译 MySQLdb 包——也许其中一个对你有用codegood.com/archives/4 我无法在 virtualenv 中做到这一点(很好的扩展,但是是的)。我也尝试过使用较低版本(1.2.1、1.2.2),但没有成功。它依赖于我的应用程序,所以我真的很想看到一个更强大的解决方案。我在这里提交了一个错误报告sourceforge.net/tracker/… 我在virtualenv下使用了easy_install这个exe文件,在windows XP下运行良好 @Rocketmonkeys 是的,您可以将二进制文件安装到 virtualenv - 请参阅 Can I install Python windows packages into virtualenvs?【参考方案7】:

如果 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(你的 virtualenv 的路径)

【讨论】:

此解决方案不再有效。尝试了所有四种可能性,但都失败了。【参考方案8】:

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

【讨论】:

这对我有用,因为我安装了 python 2.7。谢谢!【参考方案9】:

我对 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

【讨论】:

对我来说这是最简单的解决方案。不要忘记使用mysqlconnector API:engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo') 这个解决方案在 Python 2 和 3 中对我来说效果最好。 目前这只支持python最高3.4【参考方案10】:

为 mysql 安装开发位消除了我遇到的 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 中,在上面的链接中进行了建议的编辑,一切正常。

【讨论】:

关于“为 mysql 安装开发位消除了 config-win.h 错误”的快速问题。什么是“开发位”,我在哪里可以获得它们? =) 我也有类似的问题。 我也是。我已经完成了mySql 5.5的完整安装。固定站点.cfg。但仍然收到错误:_mysql.c(34):致命错误 C1083:无法打开包含文件:'config-win.h':没有这样的文件或目录 我正在重新安装我的整个 python 开发设置,我被困在这一点上。我在哪里可以找到“config-win.h”文件??? 这在上面的链接中有介绍:“下载 MySQL msi 安装程序版本,在自定义设置中选择“开发人员组件”。默认情况下不安装这些。”【参考方案11】:

最简单的工作解决方案:

从下面的链接下载 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

一定会成功的。

【讨论】:

谢谢,我已经尝试了所有方法,但没有任何效果,但是当我将我的“MySQL 连接器 C”目录从程序文件复制到程序文件 (x86) 时,问题解决了,您节省了我的时间,再次感谢您跨度> 很高兴帮助你兄弟。干杯! @Code_Worm【参考方案12】:

在我的情况下,我的修复是复制从 mysql-connector-c-6.0.2-win32.msi 创建的文件夹(从上一篇文章中的用户名缓冲区引用),该文件夹位于 c:\Program Files\MySQL \MySQL 连接器 C 6.0.2 并使用 Program Files (x86) 创建一个新路径并将内容粘贴到那里,因为安装未正确检查 32 位和 64 位机器。

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

【讨论】:

【参考方案13】:

试试ActivePython,

pypm -E C:\myvirtualenv install mysql-python

【讨论】:

【参考方案14】:

我确实遵循了 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'

然后终于成功了。

【讨论】:

【参考方案15】:

我按照沈明才的方法。

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

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.mis好像支持vs9

无论如何,这行得通。如果你想冒险,你可以试试。

【讨论】:

【参考方案16】:

Windows 上对我有用的解决方案:同时安装MySQL Connector/C 6.0.2 的32-bit 和64-bit 版本。打开Command Prompt 并运行:

pip install mysql-python

【讨论】:

【参考方案17】:

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

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

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

【讨论】:

【参考方案18】:
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.

【讨论】:

【参考方案19】:

Window10 的步骤:

转到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

【讨论】:

【参考方案20】:

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

【讨论】:

【参考方案21】:

    从此下载

    Python 2.7:https://pypi.python.org/pypi/mysqlclient/1.3.9 Python 3.6:https://pypi.python.org/pypi/mysqlclient

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

【讨论】:

【参考方案22】:

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

【讨论】:

以上是关于安装mysql-python时“无法打开包含文件:'config-win.h':没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章

安装 mysql-python 时出错:找不到 -lssl 的库

无法打开包含文件:'ntddk.h':没有这样的文件或目录

mysql-python安装时EnvironmentError: mysql_config not found

为啥我会收到警告:当 mysql-python 安装成功时,找不到与“MANIFEST”、“ChangeLog”、“GPL”匹配的文件

无法打开包含文件:“SDL.h”

如何修复 PyAudio、PortAudio 的安装问题:“致命错误 C1083:无法打开包含文件:'portaudio.h':没有这样的文件或目录”