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

2025-02-25 09:09:00
admin
原创
40
摘要:问题描述:我正在尝试在 Windows 上使用 pip 在虚拟环境中安装 mysql-python。起初,我得到了与此处报告的相同的错误,但那里的答案也适用于我。现在我收到以下错误:_mysql.c(34) : Fatal error C1083: Cannot open include file: 'con...

问题描述:

我正在尝试在 Windows 上使用 pip 在虚拟环境中安装 mysql-python。起初,我得到了与此处报告的相同的错误,但那里的答案也适用于我。现在我收到以下错误:

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

如果我将(Win7)符号链接到我的常规(不是虚拟环境)python 的 site-packages/MySQLdb 目录,我会得到

Error loading MySQLdb module: No module named _mysql

我有点不知所措。有什么指点吗?


解决方案 1:

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

https://downloads.mysql.com/archives/cc/

确保通过自定义安装包含所有可选附加程序(额外二进制文件),否则 win64.msi 无法运行

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

解决方案 2:

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

如果你正在安装 mysql-python,它会查找C:Program Files (x86)MySQLMySQL Connector C 6.0.2include。如果你安装了 64 位 MySQL,你可以简单地调用:

  1. mklink /d "C:Program Files (x86)MySQLMySQL Connector C 6.0.2include" "C:Program FilesMySQLMySQL Connector C 6.0.2include"

  2. 跑步pip install mysql-python

  3. 删除步骤1中创建的符号链接

解决方案 3:

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

在 5.5 config-win 中,实际上已移至 Windows 中的 Connector 单独文件夹。例如:

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

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

站点.cfg:

# Windows connector libs for MySQL.
connector = C:Program FilesMySQLConnector 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'libopt') ]

即你的setup_windows.py看起来很像这样:

...
library_dirs = [ os.path.join(mysql_root, r'libopt') ]
library_dirs = [ os.path.join(options['connector'], r'libopt') ]
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' ]
...

解决方案 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 安装 mysql-python

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

解决方案 5:

我知道这篇文章已经很老了,但它仍然在谷歌上排名靠前,所以我将为这个问题添加更多信息。

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

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

然而,最新的 MySQL-python 包 (1.2.5) 似乎不支持此功能。尝试安装时,我发现它明确在寻找 C Connector 6.0.2。

"-IC:Program Files (x86)MySQLMySQL Connector C 6.0.2include"

因此,通过从https://dev.mysql.com/downloads/file/?id=378015安装此版本,python 包安装没有任何问题。

解决方案 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

解决方案 7:

如果 pip 无法安装“MySQLdb”,解决方法是先从此链接下载并安装到你的机器上

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

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

c:Python27Libsite-packages (或与你的系统 Python 类似的路径)到
c:my_virtenvLibsite-packages(你的虚拟环境的路径)

解决方案 8:

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

解决方案 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

解决方案 10:

安装 mysql 的 dev bits 解决了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”复制到我的虚拟环境中,按照上面链接中的建议进行了编辑,一切运行正常。

解决方案 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

它一定会起作用。

解决方案 12:

就我而言,我的修复方法是复制从 mysql-connector-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.h 的错误

解决方案 13:

适用于 Windows10 的步骤:

  • 转至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

解决方案 14:

尝试ActivePython,

pypm -E C:myvirtualenv install mysql-python

解决方案 15:

我确实遵循了 Bugagotti 的答案,但它在我的 Windows(Win7 64 位,py27 并且安装了 mysql 连接器 6.1)上不适用于 mysql-python-1.2.5,因此我在 mysql-python-1.2.5 中做了一些甚至肮脏的更改:

首先,site.cfg:

connector = C:Program FilesMySQLMySQL 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'libs9') ]  ## the original value was r'libopt'

然后它终于成功了。

解决方案 16:

我按照沈明才的方法去做了。

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

connector = C:Program FilesMySQLMySQL Connector.C 6.1

并且 library_dirs 更改为

library_dirs = [ os.path.join(connector, r'libs10') ]

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

我装了vs2012,连接器的lib目录下只有和vs10vs11不起作用vs11,我安装的VCForPyhton27.mis好像支持vs9

无论如何,这有效。如果你愿意冒险,你可以尝试一下。

解决方案 17:

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

pip install mysql-python

解决方案 18:

对我来说,以下方法解决了该问题(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 FilesMySQLMySQL Connector C 6.0.2c:Program Files (x86)MySQLMySQL Connector C 6.1

  3. 跑步pip install mysqlclient

  4. [可选] 删除c:Program Files (x86)MySQLMySQL Connector C 6.1

这里的问题仅针对 x64 位安装所有者,因为构建脚本正在尝试定位 x86 程序文件目录中包含的 C 连接器。

解决方案 19:

building '_mysql' extension
creating build    emp.win-amd64-2.7
creating build    emp.win-amd64-2.7Release
C:UsersTimHuangAppDataLocalProgramsCommonMicrosoftVisual C++ for Python9.0VCBinamd64cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 "-IC:Program Files (x86)MySQLMySQL Connector C 6.0.2include" -Ic:python27include -Ic:python27PC /Tc_mysql.c /Fobuild    emp.win-amd64-2.7Release_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 FilesMySQLMySQL Connector C 6.0.2
C:Program Files (x86)MySQLMySQL Connector C 6.0.2

我尝试创建符号链接,但 Windows 一直拒绝我
`C:WINDOWSsystem32>mklink /d "C:Program Files (x86)MySQLMySQL Connector C 6.0.2include" "C:Program FilesMySQLMySQL Connector C 6.0.2include"
The system cannot find the path specified.`

解决方案 20:

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

解决方案 21:

  1. 从此处下载

* Python 2.7:https://pypi.python.org/pypi/mysqlclient/1.3.9
* Python 3.6:https://pypi.python.org/pypi/mysqlclient
  1. 然后通过 pip 安装程序安装此 whl。Shift + 在已下载文件夹中单击鼠标右键并选择Open powershell here。然后使用命令进行安装:pip install package_name.whl

解决方案 22:

从以下位置下载 Connector 版本。https://dev.mysql.com/downloads/connector/c/6.0.html
我安装的是 64 位 Connector,而 Python 是 32 位。因此,我必须将 MySQL 从 Program Files 复制到 Program Files(86)

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1300  
  华为IPD产品开发流程是一套先进且成熟的产品开发管理体系,对众多企业提升产品竞争力有着重要的借鉴意义。它涵盖多个关键要素,这些要素相互关联、相互作用,共同构建起高效、科学的产品开发流程。深入剖析其中的五个核心要素,能让我们更好地理解华为成功背后的产品开发逻辑,为企业的产品创新与发展提供有力的指导。市场管理市场管理是IP...
IPD框架   20  
  华为集成产品开发(IPD)体系作为一套先进的产品开发管理理念和方法,在华为的发展历程中发挥了至关重要的作用。在供应链管理领域,IPD同样展现出巨大的价值,深刻影响着企业的运营效率、产品质量以及市场竞争力。通过将IPD理念融入供应链管理,华为实现了从产品规划到交付的全流程优化,为企业的持续发展奠定了坚实基础。IPD对供应...
IPD集成产品开发流程   23  
  IPD(Integrated Product Development)项目管理作为一种先进的产品开发管理模式,旨在通过整合跨部门资源,实现产品的高效开发与上市。然而,在实际推行过程中,IPD项目管理面临着诸多风险,若处理不当,可能导致项目进度延迟、成本超支甚至项目失败。深入了解这些风险并制定有效的应对策略,对于保障IP...
华为IPD流程   19  
  华为作为全球知名的科技企业,其成功背后的管理模式备受关注。其中,IPD(集成产品开发)产品开发流程对华为的创新发展起到了至关重要的推动作用。IPD不仅仅是一种流程,更是一种先进的管理理念,它将产品开发视为一个系统工程,涵盖了从市场需求分析、产品规划、研发、生产到上市等多个环节,通过整合企业内外部资源,实现高效、协同的产...
IPD流程中PDCP是什么意思   19  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用