You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS 13.4(M1芯片)Python应用MySQLdb模块缺失问题求助

解决M1 MacOS 13.4下SQLAlchemy找不到MySQLdb的问题

问题描述

启动Python应用时抛出如下错误:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/Users/xiaoqiangjiang/source/dolphin/visa/task/refresh_token.py", line 5, in <module>
    from apps.visa.db.visa_sys_config import VisaSysConfig
  File "/Users/xiaoqiangjiang/source/dolphin/visa/apps/visa/db/visa_sys_config.py", line 4, in <module>
    from apps.visa.db.base.database_service import Base, session_scope
  File "/Users/xiaoqiangjiang/source/dolphin/visa/apps/visa/db/base/database_service.py", line 13, in <module>
    engine = create_engine(url_default, connect_args={'charset':'utf8'})
  File "<string>", line 2, in create_engine
  File "/Users/xiaoqiangjiang/source/dolphin/visa/venv/lib/python3.10/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
  File "/Users/xiaoqiangjiang/source/dolphin/visa/venv/lib/python3.10/site-packages/sqlalchemy/engine/create.py", line 601, in create_engine
    dbapi = dbapi_meth(**dbapi_args)
  File "/Users/xiaoqiangjiang/source/dolphin/visa/venv/lib/python3.10/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 152, in import_dbapi
    return __import__("MySQLdb")
ModuleNotFoundError: No module named 'MySQLdb'

已尝试pdm add mysqlclient、pdm add PyMySQL但问题未解决;尝试安装mysql-python时因Python版本兼容问题失败,安装configparser也无法解决该错误。

原因分析

  1. mysql-python是仅支持Python2的老旧包,Python3中ConfigParser已更名为configparser,因此安装失败。
  2. 安装PyMySQL后,SQLAlchemy默认仍尝试使用MySQLdb作为驱动,未切换到PyMySQL。
  3. M1芯片上安装mysqlclient需要额外配置编译依赖,直接安装会失败。

解决方案

方案一:使用PyMySQL作为驱动(简单无编译)

  1. 确保已安装PyMySQL:
    pdm add PyMySQL
    
  2. 修改数据库连接URL,将原有的mysql://前缀改为mysql+pymysql://,例如:
    原URL:mysql://user:password@host:port/dbname
    修改后:mysql+pymysql://user:password@host:port/dbname
  3. 重启应用,SQLAlchemy会自动使用PyMySQL连接数据库。

方案二:安装mysqlclient(C扩展,性能更好)

  1. 先安装编译依赖:
    brew install mysql openssl
    
  2. 设置环境变量,让编译器找到openssl:
    export LDFLAGS="-L$(brew --prefix openssl)/lib"
    export CPPFLAGS="-I$(brew --prefix openssl)/include"
    export PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig"
    
  3. 安装mysqlclient:
    pdm add mysqlclient
    
  4. 无需修改连接URL,直接重启应用即可。

清理无效依赖

先移除冲突的mysql-python包:

pdm remove mysql-python

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:47:02