mac python3使用mysqlclient报错处理办法

报错信息:

Traceback (most recent call last):
  File "/Users/fancy-lee/dev-workspace/python/venv4archery/lib/python3.9/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/fancy-lee/dev-workspace/python/venv4archery/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin.so, 0x0002): Library not loaded: @rpath/libmysqlclient.21.dylib
  Referenced from: <38FD5A28-A408-3989-A786-21A512CCFD61> /Users/fancy-lee/dev-workspace/python/venv4archery/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin.so
  Reason: tried: '/System/Volumes/Preboot/Cryptexes/OS@rpath/libmysqlclient.21.dylib' (no such file), '/usr/lib/libmysqlclient.21.dylib' (no such file, not in dyld cache)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/fancy-lee/dev-workspace/python/venv4archery/lib/python3.9/site-packages/MySQLdb/__init__.py", line 24, in <module>
    version_info, _mysql.version_info, _mysql.__file__
NameError: name '_mysql' is not defined


处理办法:

        1、进入python3安装目标下的/lib/python3.9/site-packages/MySQLdb目录,找到类似_mysql.cpython-39-darwin.so这个文件

        2、然后执行命令查找libmysqlclient.21.dylib这个文件所在的位置

        find / -name "libmysqlclient.21.dylib" 2>&1|grep -v "Permission denied\|not permitted\|Not a directory"

        3、执行以下命令:
       sudo install_name_tool -change @rpath/libmysqlclient.21.dylib /Users/fancy-lee/mysql/mysql-8.0.32-macos13-arm64/lib/libmysqlclient.21.dylib _mysql.cpython-39-darwin.so

注:/Users/fancy-lee/mysql/mysql-8.0.32-macos13-arm64/lib/libmysqlclient.21.dylib为第2步查找到libmysqlclient.21.dylib的文件信息

        4、查看执行是否成功 otool -L _mysql.cpython-39-darwin.so

        5、检查是否还报错:python3 -c "import MySQLdb"

install_name_tool和otool工具说明

Mac系统下的app和dylib动太库引用的第三方动态库需要手动设置引用的库路径,用的工具就是install_name_tool,查看一个可执行文件或者动态库引用的第三方库路径则使用的工具是otool

### Python 安装 MySQL 报错 &#39;Could not build wheels for mysqlclient&#39; 的解决方案 当遇到 `Could not build wheels for mysqlclient` 错误时,通常是因为缺少必要的构建工具或依赖项。以下是详细的解决方法: #### 1. 安装必要的开发工具和库 对于不同的操作系统,需要安装特定的依赖包来支持 `mysqlclient` 的编译。 ##### Ubuntu/Debian 系统 为了确保所有必需的依赖都已安装,在终端执行以下命令: ```bash sudo apt-get update sudo apt-get install python3-dev default-libmysqlclient-dev build-essential ``` 这些命令会安装 Python 开发文件、MySQL 客户端库以及构建工具[^4]。 ##### macOS 系统 在 Mac 上,可以通过 Homebrew 来简化依赖管理。首先更新并安装 Xcode 命令行工具: ```bash xcode-select --install brew update brew install mysql ``` 接着可以尝试重新安装 `mysqlclient` 或者考虑使用其他替代方案如 `PyMySQL`[^3]。 ##### Windows 系统 Windows 用户可能会发现直接通过 pip 安装较难成功,推荐下载预编译好的 whl 文件来进行离线安装。访问 PyPI 或其他可信源获取适合当前环境版本的轮子文件(wheel),例如 `mysqlclient‑1.4.6‑cp39‑cp39‑win32.whl`,然后运行如下指令完成安装: ```bash pip install 路径\到\下载的.whl文件 ``` #### 2. 使用预编译二进制包代替手动编译 如果不想处理复杂的编译过程,可以选择安装已经打包好的二进制发行版。这不仅节省时间而且减少了配置上的麻烦。比如可以直接使用 `pymysql` 库作为纯 Python 实现的 MySQL 驱动程序,它不需要额外的 C 扩展支持: ```python pip install pymysql ``` 之后可以在连接数据库时指定使用此驱动器: ```python import pymysql conn = pymysql.connect(host=&#39;localhost&#39;, user=&#39;root&#39;, password=&#39;&#39;, db=&#39;test&#39;) cursor = conn.cursor() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值