遇到了ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

在linux上運行程序的時候,發現有這個異常:

Traceback (most recent call last):
  File "rcctestsuite.py", line 13, in <module>
    from validator.db.processor import Processor as DBProcessor
  File "/usr/RAT/src/validator/db/processor.py", line 9, in <module>
    from syniverse.dboperate import DBOperateAction
  File "/usr/RAT/src/syniverse/dboperate.py", line 4, in <module>
    import MySQLdb,time,traceback,logging
  File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 19, in <module>
    
  File "build/bdist.linux-x86_64/egg/_mysql.py", line 7, in <module>
  File "build/bdist.linux-x86_64/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

解決方法如下:

1. 通過命令查找libmysqlclient_r.so.16 在什麼地方,一般是在/usr/lib64/mysql/下面

2. 做一個鏈接到/usr/lib64 下: ln -s /usr/lib64/mysql/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16

問題解決。

出現這個問題的原因是mysqldb無法找到libmysqlclient_r.so.16,所以就給它一個。這個文件是mysqldb用來鏈接到mysql數據庫的。


網上查找發現還有其他的解決方法,列舉如下:

1. 編輯/etc/bash_profile, 加入LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/lib/mysql:$LD_LIBRARY_PATH

但是這可能只對命令行模式下的python起作用,另外有可能覆蓋系統的搜索路徑,引起其他的程序出問題

2. 在編譯python時,就加入–with-libs=/usr/lib64/mysql 這個選項。

3. 在/etc/ld.so.conf.d目錄下,添加一個mysql文件,其中加入

/usr/lib/mysql

然後運行 ldconfig

以上方法均未嘗試





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章