macOS + Anaconda 环境下mysqlclient报错找不到动态链接库的问题
环境是mac+anconda创建的虚拟环境,flask项目,mysqlclient版本为2.1.1
运行时不报错,但是访问接口报错:
Traceback (most recent call last): File "/opt/anaconda3/envs/adp_v2_tp/lib/python3.8/site-packages/MySQLdb/__init__.py", line 18, in <module> from . import _mysql ImportError: dlopen(/opt/anaconda3/envs/adp_v2_tp/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so, 0x0002): Library not loaded: @rpath/libmysqlclient.24.dylib Referenced from: <B2C188AE-86C7-3836-85E6-93523CBDD3EE> /opt/anaconda3/envs/adp_v2_tp/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so Reason: tried: '/opt/anaconda3/envs/adp_v2_tp/bin/../lib/libmysqlclient.24.dylib' (no such file), '/opt/anaconda3/envs/adp_v2_tp/bin/../lib/libmysqlclient.24.dylib' (no such file)
错误原因为安装mysqlclient库时没有找到正确的动态链接库导致报错
解决方式:
确认 mysql-client 安装路径
brew info mysql-client
会输出类似的信息
/usr/local/opt/mysql-client
确认库文件存在
ls /usr/local/opt/mysql-client/lib/libmysqlclient*
在虚拟环境中运行下面几条命令:
export LDFLAGS="-L/usr/local/opt/mysql-client/lib" export CPPFLAGS="-I/usr/local/opt/mysql-client/include" export DYLD_LIBRARY_PATH="/usr/local/opt/mysql-client/lib:$DYLD_LIBRARY_PATH"
或者可以直接写入到~/.bash_profile
echo 'export LDFLAGS="-L/usr/local/opt/mysql-client/lib"' >> ~/.bash_profile echo 'export CPPFLAGS="-I/usr/local/opt/mysql-client/include"' >> ~/.bash_profile echo 'export DYLD_LIBRARY_PATH="/usr/local/opt/mysql-client/lib:$DYLD_LIBRARY_PATH"' >> ~/.bash_profile
然后卸载重新安装
pip uninstall -y mysqlclient pip install --no-cache-dir mysqlclient
这样再运行就不会报错了

