Python导入mariadb遇ModuleNotFoundError:找不到mariadb._mariadb模块
Python导入mariadb报错:ModuleNotFoundError No module named 'mariadb._mariadb'
问题详情
导入mariadb模块时触发如下错误:
Exception has occurred: ModuleNotFoundError No module named 'mariadb._mariadb'
相关代码:
sys.path.append("/usr/local/Cellar/mariadb-connector-c/3.3.3") sys.path.append("/usr/local/Cellar/mariadb-connector-c") import mariadb
已确认mariadb和mariadb-1.1.5.post3.dist-info已添加到sys.path,可通过print(sys.path)查看路径配置。
环境信息
- Python版本:
Python 3.9.16(使用虚拟环境) - mariadb Python包:版本1.1.5.post3,安装路径为
/Users/melinda.walker/GitHub/bi-ingestion-scripts/venv/lib/python3.9/site-packages - mariadb-connector-c:通过
brew install mariadb-connector-c安装,路径为/usr/local/Cellar/mariadb-connector-c/3.3.3
已尝试操作
执行pip3 uninstall mariadb后重新运行pip3 install --no-cache mariadb,问题仍未解决。
可行解决方案
1. 配置连接器库环境变量
Python的mariadb扩展需要找到动态链接库文件,你当前添加的是连接器安装目录,而非库文件所在路径。先确认/usr/local/Cellar/mariadb-connector-c/3.3.3/lib下存在libmariadb.dylib,然后:
- 终端中设置环境变量(临时生效):
export DYLD_LIBRARY_PATH="/usr/local/Cellar/mariadb-connector-c/3.3.3/lib:$DYLD_LIBRARY_PATH" - 或在Python代码开头添加(永久生效于当前脚本):
import os os.environ['DYLD_LIBRARY_PATH'] = "/usr/local/Cellar/mariadb-connector-c/3.3.3/lib:" + os.environ.get('DYLD_LIBRARY_PATH', '')
2. 指定连接器路径重新编译安装Python包
卸载现有包后,手动指定连接器的头文件和库文件路径重新安装:
pip uninstall -y mariadb pip install --no-cache-dir --global-option=build_ext --global-option="-I/usr/local/Cellar/mariadb-connector-c/3.3.3/include" --global-option="-L/usr/local/Cellar/mariadb-connector-c/3.3.3/lib" mariadb
3. 验证虚拟环境正确性
确认虚拟环境已正确激活,执行which python和python --version,确保使用的是虚拟环境内的Python3.9,避免和系统Python混淆导致路径错误。
4. 降级连接器版本尝试兼容性
mariadb Python包1.1.5.post3与3.3.3版本连接器理论兼容,但可尝试降级连接器版本:
brew uninstall mariadb-connector-c brew install mariadb-connector-c@3.2 brew link --force mariadb-connector-c@3.2
完成后重新安装mariadb Python包,验证问题是否解决。
内容的提问来源于stack exchange,提问作者Oceanic
相关产品推荐
相关产品推荐

