【问题标题】:"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 驱动程序,请参阅stackoverflow.com/questions/34456770/… 所以这个问题仅在 Python 3.4 之前有效。你仍然可以使用 Django 1.9(截至 01/2016 的最新稳定版本)。
  • MySQL 8.0如何解决这个问题?

标签: python windows virtualenv pip mysql-python


【解决方案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,您可以简单地调用:

  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 中创建的符号链接

【讨论】:

  • 这是解决方案的正确想法,但它对我不起作用。为了解决这个问题,我将目录 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.232-bit 和64-bit 版本。打开Command Prompt 并运行:

          pip install mysql-python
          

          【讨论】:

            【解决方案17】:

            对我来说,以下方法解决了这个问题(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 连接器。

            【讨论】:

              【解决方案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】:
                    1. 从此下载

                    2. 然后通过 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)

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2015-01-08
                        • 2018-08-18
                        • 2018-12-09
                        • 2017-07-04
                        • 2013-11-05
                        • 2014-05-07
                        • 2017-02-22
                        相关资源
                        最近更新 更多