安装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 在 virtualenv 中安装 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.lib
在lib
目录中,而安装程序期望 它在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目录只有vs10
和vs11
,其中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.2
给C:\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 的库
mysql-python安装时EnvironmentError: mysql_config not found
为啥我会收到警告:当 mysql-python 安装成功时,找不到与“MANIFEST”、“ChangeLog”、“GPL”匹配的文件
如何修复 PyAudio、PortAudio 的安装问题:“致命错误 C1083:无法打开包含文件:'portaudio.h':没有这样的文件或目录”