Ubuntu安装MySql for Python的出错及解决

寿鸣
2023-12-01

在Ubuntu下安装python的mysql模块时,遇到了一些问题,网上百度一一解决,下面汇总一下以备不时之需

1. 安装mysql模块见:python使用mysql数据库

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

3.解决Python.h:没有那个文件或目录错误的办法:解决Python.h

4.python-dev无法安装:解决python-dev无法安装

 

主要安装步骤:(参照链接1中,copy过来的,修改了些)

 安装MySql:

>>sudo apt-get install mysql-server 

>>Sudo apt-get install  mysql-client

要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

下载地址:https://pypi.python.org/pypi/MySQL-python/

我使用的是最新的,

下载MySQL-python-1.2.3.zip 文件之后直接解压。进入MySQL-python-1.2.3目录:

>>sudo python setup.py install

这时便出错了,错误如下:


sh: mysql_config: not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/home/zhxia/apps/source/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/home/zhxia/apps/source/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

解决方法见上面的链接2.mysql-python安装时EnvironmentError: mysql_config not found(下面是复制过来的要点)


只要原因是没有安装:libmysqlclient-dev

sudo apt-get install libmysqlclient-dev

找到mysql_config文件的路径

sudo updatedb
locate mysql_config

mysql_config的位置为:/usr/bin/mysql_config

在mysql-python源码包下找到:setup_posix.py 文件,然后找到文件中的 mysql_config.path 将其值改为:/usr/bin/mysql_config,然后 sudo python setup.py install ,就ok了

弄好之后,继续sudo python setup.py install,又出问题了,问题如下:

致命错误: Python.h:没有那个文件或目录

编译中断。

error: Setup script exited with error: command 'gcc' failed with exit status 1


解决办法见上面的链接3.方法如下:


解决方法是安装python-dev,这是Python的头文件和静态库包:

sudo apt-get install python-dev

但是当我在安装python-dev的时候又出现问题了,问题如下:


下列软件包有未满足的依赖关系:
 python2.7-dev : 依赖: python2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 正要被安装
                 依赖: libpython2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 正要被安装
                 依赖: libexpat1-dev 但是它将不会被安装
                 依赖: libssl-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解决办法见上面的链接4中的回答,方法如下:

用aptitude 工具可以搞定
先:sudo apt-get install aptitude 
然后:
sudo aptitude install python-dev
下列“新”软件包将被安装。         
  python-dev python2.7-dev{ab} 
0 个软件包被升级,新安装 2 个, 0 个将被删除, 同时 0 个将不升级。
需要获取 29.5 MB 的存档。 解包后将要使用 39.3 MB。
下列软件包存在未满足的依赖关系:
 python2.7-dev : 依赖: python2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 已安装。
                 依赖: libpython2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 已安装。
                 依赖: libexpat1-dev 但它将不会被安装。
                 依赖: libssl-dev 但它将不会被安装。
下列动作将解决这些依赖关系:

     保持 下列软件包于其当前版本:
1)     python-dev [未安装的]      
2)     python2.7-dev [未安装的]  

是否接受该解决方案?[Y/n/q/?] n(注意这里选择N)
下列动作将解决这些依赖关系:

     安装 下列软件包:                                                       
1)     libexpat1-dev [2.0.1-7.2ubuntu1 (precise)]                            
2)     libssl-dev [1.0.1-4ubuntu3 (precise)]                                 
3)     libssl-doc [1.0.1-4ubuntu3 (precise)]                                 

     降级 下列软件包:                                                       
4)     libexpat1 [2.0.1-7.2ubuntu1.1 (now) -> 2.0.1-7.2ubuntu1 (precise)]    
5)     libpython2.7 [2.7.3-0ubuntu3.1 (now) -> 2.7.3-0ubuntu3 (precise)]     
6)     libssl1.0.0 [1.0.1-4ubuntu5.7 (now) -> 1.0.1-4ubuntu3 (precise)]      
7)     python2.7 [2.7.3-0ubuntu3.1 (now) -> 2.7.3-0ubuntu3 (precise)]        
8)     python2.7-minimal [2.7.3-0ubuntu3.1 (now) -> 2.7.3-0ubuntu3 (precise)]

是否接受该解决方案?[Y/n/q/?] y(这里选择Y)
下列软件包将被“降级”:
  libexpat1 libpython2.7 libssl1.0.0 python2.7 python2.7-minimal 
下列“新”软件包将被安装。
  libexpat1-dev{a} libssl-dev{a} libssl-doc{a} python-dev python2.7-dev{a} 
0 个软件包被升级,新安装 5 个, 5 个被降级, 0 个将被删除, 同时 0 个将不升级。
需要获取 39.0 MB 的存档。 解包后将要使用 47.8 MB。
您要继续吗?[Y/n/?]Y

安装过程有点慢


至此,MySql for python 终于安装成功了。。。




 类似资料: