Windows 上安装 mysqlclient 时遇到了编译错误,核心原因是缺少 Microsoft Visual C++ 14.0 或更高版本 的编译环境。

🐛 Bug记录:mysqlclient 安装失败,正常pip install 已无法正常下载!

错误信息

powershell 复制代码
PS C:\Users\联想\Desktop\重庆市旅游景点数据可视化分析> pip install -i https://mirrors.aliyun.com/pypi/simple mysqlclient
...
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
ERROR: Failed building wheel for mysqlclient
Failed to build mysqlclient
ERROR: Failed to build installable wheels for some pyproject.toml based projects (mysqlclient)

✅ 解决方案(任选一种)

1️⃣ 安装 Visual C++ 编译工具(推荐)

  • 下载 Microsoft C++ Build Tools

  • 安装时勾选 "C++ 桌面开发" 工作负载(会自动包含 Windows 10 SDK 等必要组件)

  • 安装完成后重启电脑 ,再重新运行:

    powershell 复制代码
    pip install -i https://mirrors.aliyun.com/pypi/simple mysqlclient

2️⃣ 使用预编译的 wheel 文件(更省事)

3️⃣ 改用纯 Python 的 PyMySQL(无需编译 推荐!!!)

如果你不介意更换数据库驱动,可以直接安装 PyMySQL,它不依赖 C 编译环境:

powershell 复制代码
pip install -i https://mirrors.aliyun.com/pypi/simple pymysql

然后在你项目的数据库连接代码中将 MySQLdb 替换为 PyMySQL(或设置 pymysql.install_as_MySQLdb())。


🔧 针对第 3 种方案:如何具体快简便速操作?

你需要在项目中使用数据库连接的代码文件里进行修改。具体位置取决于你使用的开发框架或数据库操作方式:

情况 1:使用 Django 框架

  • 找到项目主目录下的 __init__.py 文件(与 settings.py 同级)

  • 在顶部添加:

    python 复制代码
    import pymysql
    pymysql.install_as_MySQLdb()
  • 如果没有该文件,新建一个 __init__.py 即可。

情况 2:使用 Flask + SQLAlchemy(或原生 MySQLdb)

  • 打开你初始化数据库连接的那个文件(通常是 app.pydb.pymodels.pyconfig.py

  • 导入任何数据库模块之前 添加:

    python 复制代码
    import pymysql
    pymysql.install_as_MySQLdb()

修改后还需安装 PyMySQL

powershell 复制代码
pip install -i https://mirrors.aliyun.com/pypi/simple pymysql

这样就能避开编译问题,让项目不会因为数据库连接的问题导致项目失败 从而使项目正常运行。


相关推荐
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(六):<线程同步与互斥>线程同步(上)
java·linux·运维·服务器·c++·学习·线程
好家伙VCC2 小时前
# BERT在中文文本分类中的实战优化:从基础模型到高效部署BERT(Bi
java·人工智能·python·分类·bert
u0107475462 小时前
JavaScript 递归调用栈深度解析与层级遍历陷阱详解
jvm·数据库·python
深兰科技2 小时前
深兰科技与宝武集团旗下钢友汇达成国际市场合作,俄罗斯、巴西、阿根廷市场同步推进
人工智能·django·fastapi·pygame·httpx·视觉大模型·深兰科技
feng_you_ying_li2 小时前
C++11可变模板参数,包扩展,emplace系列和push系列的区别
前端·c++·算法
tankeven2 小时前
HJ177 可匹配子段计数
c++·算法
本地化文档2 小时前
requests-docs-l10n
python·http·github·gitcode
Metaphor6922 小时前
使用 Python 将 PowerPoint 转换为 PDF
python·pdf·powerpoint
XiYang-DING2 小时前
【Java】Lambda表达式
java·开发语言·python