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

MacOS环境下Django无法找到MySQL驱动的原因排查求助

MacOS下Django找不到MySQL驱动的解决方法

问题核心

报错显示MySQLdb的扩展文件无法通过@rpath找到libmysqlclient.21.dylib,该文件实际位于/usr/local/mysql-8.0.31-macos12-x86_64/lib/,本质是@rpath未包含该路径。

解决方向

1. 临时/永久设置环境变量

  • 临时启动Django时指定DYLD_LIBRARY_PATH:
    DYLD_LIBRARY_PATH=/usr/local/mysql-8.0.31-macos12-x86_64/lib/ python manage.py runserver
    
  • 永久生效(添加到shell配置文件,如~/.zshrc或~/.bash_profile):
    echo 'export DYLD_LIBRARY_PATH="/usr/local/mysql-8.0.31-macos12-x86_64/lib:$DYLD_LIBRARY_PATH"' >> ~/.zshrc
    source ~/.zshrc
    

2. 修改MySQLdb扩展文件的rpath

直接给_mysql.cpython-310-darwin.so添加MySQL库路径到rpath:

install_name_tool -add_rpath /usr/local/mysql-8.0.31-macos12-x86_64/lib/ /Users/mike/.virtualenvs/djangoprod/lib/python3.10/site-packages/MySQLdb/_mysql.cpython-310-darwin.so

验证修改结果:

otool -l /Users/mike/.virtualenvs/djangoprod/lib/python3.10/site-packages/MySQLdb/_mysql.cpython-310-darwin.so | grep -A 5 LC_RPATH

3. 创建软链接到系统默认库路径

将libmysqlclient.21.dylib链接到/usr/local/lib(系统会扫描该路径):

sudo ln -s /usr/local/mysql-8.0.31-macos12-x86_64/lib/libmysqlclient.21.dylib /usr/local/lib/libmysqlclient.21.dylib
sudo update_dyld_shared_cache

4. 重新编译安装mysqlclient

卸载现有版本后,指定MySQL路径重新安装:

pip uninstall mysqlclient
pip install mysqlclient --global-option=build_ext --global-option="-I/usr/local/mysql-8.0.31-macos12-x86_64/include" --global-option="-L/usr/local/mysql-8.0.31-macos12-x86_64/lib"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:01:24