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

时间:2009-12-29 00:13:08

标签: python windows virtualenv pip mysql-python

我正在尝试使用pip on windows在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目录,我得到

Error loading MySQLdb module: No module named _mysql

我在这里相当茫然。有什么指针吗?

22 个答案:

答案 0 :(得分:87)

我所要做的只是转到oracle,然后下载MySQL Connector C 6.0.2( newer不起作用!)并进行典型的安装。

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

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

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

希望有所帮助

答案 1 :(得分:24)

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

答案 2 :(得分:17)

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

在5.5配置中。实际上已经移动到Windows中的Connector单独文件夹。即smth喜欢:

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

答案 3 :(得分:15)

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

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

      

    还有一个针对conenctor的zip文件,但是因为没有用   mysqlclient.lib位于lib目录中,而安装程序则需要   它在lib/opt。而不是黑客入侵site.cfg或setup_windows.py   msi完成了这项工作。

  • pip install mysql-python

P.S。由于我不再使用MySQL,我的答案也可能已经过时了。

答案 4 :(得分: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软件包没有任何问题。

答案 5 :(得分: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

答案 6 :(得分:5)

如果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之路)

答案 7 :(得分:4)

好吧,如果您仍然遇到问题,可以从http://code.google.com/p/soemin/downloads/detail?name=MySQL-python-1.2.3.win32-py2.7.exe

下载安装程序

答案 8 :(得分:4)

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

答案 9 :(得分: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中,在上面的链接中进行了编辑,事情正常。

答案 10 :(得分: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

一定会奏效。

答案 11 :(得分: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

答案 12 :(得分:1)

我确实按照Bugagotti的回答,并且它在我的Windows(Win7 64位,py27并安装了mysql连接器6.1)中不能用于mysql-python-1.2.5,所以我在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'

然后它终于工作了。

答案 13 :(得分:1)

after

如果您在尝试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-pythonC:\Program Files\MySQL\MySQL Connector C 6.0.2

我试图创建符号链接,但Windows一直在抛弃我 C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2

答案 14 :(得分:1)

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

  1. 下载最新的MySQL C Connector 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\
  5. 这里的问题仅适用于x64位安装所有者,因为构建脚本试图在x86程序文件目录中找到C连接器包含。

答案 15 :(得分:1)

Windows上为我工作的解决方案:同时安装32位和64位版本的MySQL Connector/C 6.0.2。打开Command Prompt并运行:

pip install mysql-python

答案 16 :(得分:1)

我跟着Mingcai SHEN的方法。

但在我的情况下,我将连接器更改为

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

无论如何,这是有效的。如果你想冒风险,你可以试试。

答案 17 :(得分:1)

尝试ActivePython

pypm -E C:\myvirtualenv install mysql-python

答案 18 :(得分:0)

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

答案 19 :(得分:0)

  1. 从此

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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