pip安装mysql-python失败,显示环境错误:未找到mysql_config。

944

这是我遇到的错误

(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log
(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log

我该怎么做才能解决这个问题?


2
请见此讨论:安装mysqldb python接口时找不到mysql_config 这对我有用 :) - Staccato
2
我是 MAC OS 用户 我通过这个问题得到解决 https://dev59.com/O-k5XIcBkEYKwwoY7eME - PatricioS
24个回答

1597

看起来您的系统上缺少mysql_config,或者安装程序找不到它。 请确保已经安装了mysql_config。

例如在Debian/Ubuntu上,您需要安装以下软件包:

sudo apt-get install libmysqlclient-dev

也许你的路径中没有mysql_config,在自己编译mysql套件时会出现这种情况。

更新:对于最近版本的Debian/Ubuntu(截至2018年),它是

sudo apt install default-libmysqlclient-dev

26
对我来说仍然出现了一个错误。我使用了apt-get install python-mysqldb代替。 - Jonatan Littke
53
我的经验是:对我来说,“sudo apt-get install libmysqlclient-dev”有效,而“sudo apt-get install python-mysqldb”没有帮助。 - Anentropic
25
在我看来,安装全局的python-mysqldb有点违背virtualenv的初衷。 - fncomp
45
对于Mariadb,sudo apt-get install libmariadbclient-dev就可以解决问题。 - yuvilio
12
如果这些解决方案对您不起作用,那么您可能仍需要安装python-dev: apt-get install python-dev - Anoyz
显示剩余17条评论

323
在Mac OS中,我只需在终端中运行以下命令即可修复:
export PATH=$PATH:/usr/local/mysql/bin

这是我找到的最快修复方法-将其添加到路径中,但如果您计划在另一个环境中安装MySQL-python,则最好永久添加它(即将其添加到/etc/paths)。

(已在OSX Mountain Lion中测试)


6
如果您正在使用Bitnami的MAMP堆栈,请使用export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/bin。另一方面,如果您正在使用这个商业化的MAMP堆栈,请卸载它并获取Bitnami版本,因为后者更好用且包含了MySQL头文件。 - Timmmm
3
将路径永久添加到 /etc/paths 的底部 - 您需要打开一个新的终端窗口才能访问新路径。 - rojoca
@Timmmm 这个解决方案相当昂贵,因为我的所有数据库都是官方版本:/ 有没有其他方法可以解决这个问题? - Volatil3
1
非常有用。如果您正在使用XAMPP,请将其用作export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin - Kevin London
11
谢谢,终于可以了!如果没有安装mysql,请使用brew install mysql进行安装。安装完成后,mysql的位置为/usr/local/bin/mysql(如果未创建符号链接,则为/usr/local/Cellar/mysql/版本号/bin/)。 - Aziz Alto
显示剩余5条评论

108

对于上述问题可能有各种答案,下面是一个汇总解决方案。

针对 Ubuntu 操作系统:

$ sudo apt update
$ sudo apt install python-dev
$ sudo apt install python-MySQLdb

对于CentOS:

$ yum install python-devel mysql-devel

感谢 CentOS 的提示。我一早上都在追寻这个问题。 - Pete Magsig
2
也许值得加入 python3-dev / python3-devel - Gergely M

106
apt-get install libmysqlclient-dev python-dev

看起来起作用了。


2
是的,对我来说仅有libmysqlclient-dev还不够,还需要python-dev。 - Anderson Santos
在Ubuntu 12.04(精确版)(32位)中,经过从10.04(卢西德版)的原地升级后,只有这个解决了这些错误。特别是额外的“python-dev”! - Ice
对我也起作用了——python-dev是最后的关键。已经安装了python-mysqldb,所以肯定不仅需要它。 - Tim S.
更新:对于Python3,您必须安装python3-dev - cezar
我需要这样做并安装gcc才能成功安装。此外,最好不要安装python-dev,而是指定特定版本,如python2.7-devpython3.6-dev等。 - Tim Tisdall
在Ubuntu 16.04上运行良好。 - Alexandr S.

49

如果您使用的是 MAC 操作系统,请全局安装此软件。

brew install mysql

然后像这样导出路径

export PATH=$PATH:/usr/local/mysql/bin

无论是全局还是在您的虚拟环境中,都可以使用。

pip install MySQL-Python

注:对于Python3全局设置,因为Mac可以同时拥有Python2和3。

pip3 install MySQL-Python

如果您仍然遇到有关mysqlclient的错误,请参考以下链接:https://dev59.com/s6nka4cB1Zd3GeqPNmnY - Harry Moreno

38

3
当我放弃了mysqldb和缺失的mysql_config混乱时,这是唯一有效的方法。对我的目的来说效果很好。 - wh1tney
1
@wjoba,能否详细解释一下?我正在安装py-mysql2pgsql,但出现了mysql_config的错误。我正在使用MAMP。MySQL连接器是做什么用的? - Volatil3
2
@Volatil3 对我来说,mysql-connector-python很好地作为mysql-python的开箱即用替代品。通过pip安装前者没有任何问题,并且消除了mysql_config错误,因为(根据开发人员自己的话)mysql连接器是“纯Python,不需要任何其他MySQL软件,因此没有C库和编译。”希望这有所帮助。尝试在此解决方案中提到的安装方式,看看是否仍然遇到错误。 - wh1tney
在Ubuntu 14/4上,我收到以下错误信息:无法找到满足mysql-connector-python要求的任何下载。 - Timo

29

对于CentOS用户:

yum install -y mysql-devel python-devel python-setuptools

然后执行:

pip install MySQL-python


如果这个解决方案无法正常工作,并且出现像以下这样的gcc编译错误:
_mysql.c:29:20: error: Python.h: No such file or directory

您需要指定Python.h的路径,像这样执行:
pip install --global-option=build_ext --global-option="-I/usr/include/python2.6" MySQL-python


1
这听起来好像你没有正确的包含文件用于Python二进制文件,pip正在安装。Python本身通常提供包含位置;手动指定路径很可能会指向错误版本 - Martijn Pieters
我不得不执行sudo pip install MySQL-python来解决一个错误:copying build/lib.linux-x86_64-2.7/_mysql_exceptions.py -> /usr/lib64/python2.7/site-packages error: /usr/lib64/python2.7/site-packages/_mysql_exceptions.py: Permission denied - bennythejudge

19

我在尝试在Amazon EC2 Linux实例上安装mysql-python,我必须安装以下内容:

yum install mysql mysql-devel mysql-common mysql-libs gcc

但是我遇到了这个错误:

_mysql.c:29:20: fatal error: Python.h: No such file or directory

所以我安装了:

yum install python-devel

然后就万事大吉了。


1
我在虚拟环境之外使用了以下命令:sudo yum install mysql mysql-devel mysql-common mysql-libs gcc。然后,我返回到我的虚拟环境并运行了pip install mysql-python,它成功了。 - tandy
1
dnf install mysql-devel gcc 对我来说已经足够了,其余部分取决于情况。 - Jens Timmerman
python-devel will now give error, if using python 2.7 try this python27-devel - Sizzling Code

10

如果有人使用MariaDB而不是MySQL,解决方法是安装libmariadbclient-dev软件包,并创建一个符号链接到正确名称的配置文件。

例如,以下方法适用于我:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config

2
这是一个被低估的答案,在任何需要连接到特定已知数据库套接字的情况下都很有用。它帮助我连接到一个独立的 MySQL 数据库。 这里的大多数解决方案只建议重新安装(或安装第二个或第三个...等)MySQL 客户端! - 7yl4r

9

针对Linux操作系统

这对我而言有效

yum install python-devel mysql-devel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接