ubuntu20 python2 通过安装包安装mysql-python

前言

众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
最近要测试一个python2环境的代码,其中用到了MySQLdb, 查询网络,发现要安装mysql-python,于是就进行了一番艰难的探索,现在汇总记录一下,希望能过够为大家提供些许帮助。

解决方案

本方案前提默认已经安装配置好了mysql环境。

  1. 安装python2
    sudo apt-get install python2
    sudo apt-get install python2-dev

  2. 安装pip2
    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
    python get-pip.py

  3. 配置pip国内镜像源,如果已配置,可忽略此步
    在/root/下,mkdir .pip
    在/root/.pip/目录下,touch pip.conf
    编辑pip.conf

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
  1. 安装依赖
    aptitude search mysql | grep devel
    可以发现,需要libmysql++-dev, libmysqlclient-dev这两个包 (具体下载的包以上一步搜到的为准比如有的是:libmysqlcppconn-dev,default-libmysqld-dev,反正如果提示找不到的话,就可以多安几个试试)
    sudo apt-get install libmysql++-dev
    sudo apt-get install libmysqlclient-dev

  2. 使用MySQL-python-1.2.3安装包安装
    安装包地址:MySQL-python-1.2.3
    下载解压后,放到ubuntu中.

此时,如果在解压目录运行:python2 setup.py install,会报错:mysql_config not found
需要找到mysql_config地址:
sudo updatedb
locate mysql_config
我的地址在:/usr/bin/mysql_config
接着,修改MySQL-python-1.2.3目录中的setup_posix.py:
把 mysql_config.path = "mysql_config" 修改为 mysql_config.path = "/usr/bin/mysql_config"

如果再运行python2 setup.py install, 会报错:'my_config.h' file not found
需要找到mysql.h位置,并在同位置把mysql.h复制为my_config.h
locate mysql.h
cd /usr/include/mysql/
cp mysql.h my_config.h

再次运行python2 setup.py install, 安装成功!

如果安装过程中报错:

_mysql.c:1804:41: error: ‘MYSQL’ {aka ‘struct st_mysql’} has no member n

可以参考:麒麟安装MySQL-python报错:_mysql.c:1804:41: 错误:‘MYSQL {或称 struct st_mysql}’没有名为‘reconnect’的成员:

1. 下载包,官网下载都行。

pip download MySQL-python==1.2.3

2. 解包修改

tar -zxf MySQL-python-1.2.3.tar.gz

cd MySQL-python-1.2.3/

vi _mysql.c +1804 ,  注释内容:/* if ( reconnect != -1 ) self->connection.reconnect = reconnect; */

tar -zcf MySQL-python-1.2.3.tar.gz MySQL-python-1.2.3

 3. 安装修改过的tar 包。

pip install MySQL-python-1.2.3.tar.gz

主要参考博客

  1. mysql-python安装时EnvironmentError: mysql_config not found

  2. 解决mac _mysql.c:44:10: fatal error: ‘my_config.h‘ file not found

  3. 麒麟安装MySQL-python报错:_mysql.c:1804:41: 错误:‘MYSQL {或称 struct st_mysql}’没有名为‘reconnect’的成员

posted @ 2021-12-22 11:26  BrianSun  阅读(466)  评论(0编辑  收藏  举报