python导入mysqldb_Python导入MySQLdb报错

摘要

> flask开发相关功能,在本地测试没有问题,但是放到线上环境却报错 `ImportError: libmysqlclient.so.16: cannot open shared object file: No such file or directory`

> 检查了下发现在 `/usr/lib64/mysql` 下面存在`libmysqlclient.so.18`文件(uanme -a 确认是64位系统)

---

## 解决过程

发现问题,不是自己遇到的也没有解决办法,那就网上查呗,发现大家的思路:

+ copy `/usr/lib64/mysql/libmysqlcient.so.18 `到`/usr/lib64/libmysqlclient.so.16`

+ 在`/usr/lib64/`下面建立libmysqlclient.so.16的软连接

+ 在`/etc/ld.so.conf.d/mysql-x86_64.conf`里面添加 /usr/lib64/mysql

等等思路都尝试之后发现还是还是没有解决。

继续思考:

环境中明明有`libmysqlclient.so.18` 为何要去找`libmysqlclient.so.16`,

那就先考虑`libmysqlclient.so.18`是从和而来。 在报错中提到了`_mysql.so` , locate 找到`_mysql.so` 发现是在`/root/.pyenv/versions/flask2/lib/python2.7/site-packages/_mysql.so`,好项目有什么问题,找`mysql.so` 发现如下:

```bash

root@pts/1 # locate mysql.so

/root/.pyenv/versions/2.7.12/envs/flask2/lib/python2.7/site-packages/_mysql.so

/usr/lib64/php/modules/mysql.so

/usr/lib64/php/modules/pdo_mysql.so

/usr/lib64/php-zts/modules/mysql.so

/usr/lib64/php-zts/modules/pdo_mysql.so

/var/lib/mysql/mysql.sock

```

猜想应该和和PHP有关系,想起来本地环境和线上环境安装的PHP不一致

本地的PHP是通过 `webtatic` 安装的,而服务器上面的是通过 `remi`安装的, 在本地执行`yum list |grep libmysql`:

```bash

[root@i-bskmtj6q ~]# yum list |grep libmysql

libmysqlclient16.x86_64 5.1.69-1.w6 webtatic

libmysqlclient16-devel.x86_64 5.1.69-1.w6 webtatic

```

发现libmysqlclient16 是来自于 `webstatic`, 故卸载之前通过remi安装的PHP,采用webstatic方式安装

```bash

## remove remi

yum remove php php-fpm php-mysqlnd php-common

## install from webstatic

yum install php56w php56w-mysql php56w-fpm php56w-common

```

最后验证导入 MySQLdb 没有报错,一切正常

---

## 附加:

上文中提到了 `webtatic` 和 `remi` 两个不同的安装源,具体的区别可以参考链接

Centos下YUM安装PHP的两种方式 [http://www.jianshu.com/p/2ff15676f902](http://www.jianshu.com/p/2ff15676f902)

---

----------------------------------------------***更多精彩请关注***-------------------------------------

![公众号: DailyJobOps](http://upload-images.jianshu.io/upload_images/1394001-cb23ed39087edab0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/200)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值