萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Python MySQLdb ImportError: libmysqlclient.so.18 找不到動態庫解決:建立軟連結

錯誤現象

ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

Python 環境找不到 MySQL 客戶端動態庫 libmysqlclient.so.18。

根因

  • MySQL 安裝目錄(如 /usr/local/mysql/lib/)不在系統動態連結器搜尋路徑(/etc/ld.so.conf.d/、LD_LIBRARY_PATH)中。
  • Python 的 MySQLdb (C 擴展) 運行時依賴此庫。

解決:建立系統級軟連結

64 位系統(主流)

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
ldconfig  # 刷新動態庫緩存

32 位系統

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
ldconfig

驗證

ldconfig -p | grep libmysqlclient.so.18
# 應顯示指向 /usr/lib64/libmysqlclient.so.18

替代方案:環境變數指定庫路徑(不需 root/不想動系統目錄)

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
# 寫入 ~/.bashrc 或啟動腳本永久生效

進階:使用 mysqlclient 替代 MySQLdb(推薦)

  • MySQLdb (MySQL-python) 已停止維護,不支援 Python 3.7+ 新特性。
  • mysqlclient 是官方分支,持續更新,API 相容:
pip uninstall MySQL-python
pip install mysqlclient

安裝 mysqlclient 時會自動偵測 mysql_config 路徑,通常無需手動處理動態庫。

驗證導入

python -c "import MySQLdb; print(MySQLdb.__version__)"
# 或
python -c "import mysqlclient; print('ok')"
copyright © 萬盛學電腦網 all rights reserved