安装mysqldb python接口时找不到mysql_config


476

我正在尝试使Python脚本在通过ssh连接到的Linux服务器上运行。该脚本使用mysqldb。我有我需要的所有其他组件,但是当我尝试通过setuptools安装mySQLdb时,如下所示:

python setup.py install

我得到以下与mysql_config命令有关的错误报告。

sh: mysql_config: command not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/usr/lib/python2.5/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

还有其他人遇到此错误吗?如果是,您如何解决该错误/我该怎么做才能成功安装mysqldb?


1
@ user904542,您好:我已对您的问题进行了编辑,以期使其更加简洁,并为您提供一些答案:)如果您不喜欢它,或者想提供其他详细信息,则直接在您的问题下方有一个编辑链接,您可以可用于回滚到原始版本,或添加到我所做的更改中。

3
我遇到了完全相同的问题,因为我从源代码安装了mysql。如果您也这样做,只需运行以下命令以使mysql_config可用:sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config或将/ usr / local / mysql / bin /添加到您的路径。
Thi Duong Nguyen

如果您已经安装了mysql,Thi Duong Nguyen的上述注释通过在/ usr / bin目录中创建指向mysql_config文件的符号链接来解决该问题,该文件位于python将搜索的路径中。
Alex Boschmans

2
只要做到这一点-------------- apt-get install python-mysqldb
shadow0359'1

@AlexBoschmans的符号链接/usr/bin是错误的,这是usr/local/my...Thi的答案。
Timo

Answers:


700

mySQLdb是mysql的python接口,但不是mysql本身。显然,mySQLdb需要命令“ mysql_config”,因此您需要先安装该命令。

您可以通过从shell运行“ mysql”来确认自己是否安装了mysql吗?这应该给您一个响应,而不是“ mysql:not found”。

您使用的是哪个Linux发行版?Mysql已为大多数Linux发行版预先打包。例如,对于debian / ubuntu,安装mysql就像

sudo apt-get install mysql-server

mysql-config位于不同的软件包中,可以从安装(同样,假设debian / ubuntu):

sudo apt-get install libmysqlclient-dev

如果您使用的是mariadb,请替换为mysql,然后运行

sudo apt-get install libmariadbclient-dev

参考:https : //github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797


1
读取软件包列表...完成构建依赖关系树读取状态信息...完成注意,选择libmysqlclient15-dev代替libmysqlclient-dev无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的不稳定发行版中尚未创建某些必需的软件包或将其从“传入”中移出。以下信息可能有助于解决这种情况:以下软件包具有未满足的依赖性:libmysqlclient15-dev:依赖性:zlib1g-dev但不会被安装E:损坏的软件包
user904542 2011年

2
“ sudo apt-get install mysql-server”应该是“ sudo apt-get install mysql-server”吗?
Kohanz 2015年

4
请注意,为Debian是sudo apt-get install mysql-serversudo apt-get install mysql-client
马克Juchli

2
我们最终可以承认“点子”是一个巨大的失败吗?像这样的错误是如此痛苦,并且大多数软件包似乎都在发生这种错误。Python迫切需要一种新的软件包管理解决方案。
Eddie Sullivan'9

3
对于我来说,在Debian上是libmysqlclient-dev。实际上,我已经安装了两个libmariadbclient-dev libmysqlclient-dev
mirek '19

187

我正在python-mysql使用以下命令在Ubuntu 12.04上安装

pip install mysql-python

首先,我有同样的问题:

Not Found "mysql_config"

这对我有用

$ sudo apt-get install libmysqlclient-dev

然后我有这个问题:

...
_mysql.c:29:20: error fatal: Python.h: No existe el archivo o el directorio

compilación terminada.

error: command 'gcc' failed with exit status 1

然后我尝试了

apt-get install python-dev

然后我很高兴:)

pip install mysql-python
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python
        building '_mysql' extension
        gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g
        In file included from _mysql.c:44:0:
        /usr/include/mysql/my_config.h:422:0: aviso: se redefinió "HAVE_WCSCOLL" [activado por defecto]
        /usr/include/python2.7/pyconfig.h:890:0: nota: esta es la ubicación de la definición previa
        gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...

1
在openSUSE上也可以使用,其中“ libmysqlclient-dev”变为“ libmysqlclient-devel”。现在,pip包安装正常。谢谢。
pbarill

谢谢!在Ubuntu 14.04.1 LTS上也可以使用
Krasimir

安装python dev标头解决了丢失的Python.h错误。谢谢。
Natus Drew's

3
如果使用python3.x,请尝试使用apt-get install python3-dev。
莱戈拉斯·布鲁姆

在14.04上,这对我不起作用-“ E:软件包'python-dev'没有安装候选程序”
Rene Wooller

46

(特定于Mac OS X)

我做了很多尝试,但是这些命令最终对我有用。

  1. 安装 mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. 将mysql bin文件夹添加到PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. 创建一个符号链接
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl来源
  8. 最后,安装mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

更新:如果此方法不起作用,@ vinyll建议brew link mysql在步骤8之前运行。


2
只需执行第1-4步即可。谢谢!
kujiy

对于步骤4,用于brew info mysql获取mysql安装的实际/正确路径。然后,要使PATH更改继续存在,请export PATH..在〜/ .bash_profile中执行。
Gino Mempin

第1-4步,brew link --overwrite mysql-connector-c在Mac上运行
Hunger

最后,它可以在我的Catalina上使用。使用指定打开ssl非常重要。
快乐的

4
我必须在执行brew link mysql第8步之前进行操作。
Vinyl

37

在红帽上,我不得不做

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

然后它起作用了。


3
在CentOS 7上为我工作:yum install MySQL-python
hudolejev '16

2
如果您需要MySQL-python作为Python软件包安装,或者正在使用virtualenv,这可能会有所帮助:yum install mysql-devel; venv/bin/pip install MySQL-python
hudolejev's

2
如果您sudo yum install mariadb-devel先在CentOS 7上使用MariaDB ,则可以通过pip install mysqlclient
Belter 17'Dec

您从哪里获得gcc-devel rpm?
Fayaz

yum install mysql-develCentos 8
迭戈·安德烈斯·迪亚斯·埃斯皮诺萨

33

以下内容适用于Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

尽管一切正常,但我仍然继续执行以下操作:

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

27

尝试安装时出现相同的错误mysql-python

这就是我修复它的方式。

sudo PATH=/usr/local/mysql/bin/:$PATH pip install mysql-python

问题是安装程序无法在默认路径中找到mysql_config。现在它可以..并且有效..

 15 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. build/temp.macosx-10.8-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.8-intel-2.7/_mysql.so -arch x86_64

Successfully installed mysql-python
Cleaning up...

希望这可以帮助。

谢谢。


我在运行OSX 10.9.4(Mavericks)的Mac上本地安装MySQL时遇到相同的问题。这个解决方案也对我有用。
2014年

20

我通过以下步骤解决了此问题:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install

1
当运行> = Debian Stretch时,请确保安装default-libmysqlclient-dev,因为常规libmysqlclient-dev软件包没有安装候选者。
博诺

19

命令(也是mysql)mPATH可能丢失。

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


11

步骤1:-同时安装Python3和Python3-dev

sudo apt-get install python3 python3-dev

步骤2:- 安装Python和Mysql连接器

sudo apt-get install libmysqlclient-dev

步骤3:- 安装python mysql客户端

sudo apt-get install mysqlclient

这将解决您的问题


步骤2为我修复了此问题。
saltchicken

这已解决了困扰我3个小时的问题。.非常感谢!!!
Yeojin

10

如果您使用的是macOS,并且已经通过brew install安装了mysql@5.7,请执行以下操作:

  1. brew install mysql-connector-c
  2. brew unlink mysql@5.7
  3. brew link --overwrite --dry-run mysql@5.7 首先,查看哪些符号链接被覆盖
  4. brew link --overwrite --force mysql@5.7 用mysql@5.7实际覆盖与mysql相关的符号链接
  5. pip install mysqlclient

9

我通过安装libmysqlclient来修复它:

sudo apt-get install libmysqlclient16-dev

9

MySQL-python软件包正在使用该mysql_config命令来了解mysql主机上的配置。您的主机没有该mysql_config命令。

来自dev.mysql.com的MySQL开发库程序包(MySQL-devel-xxx)提供了此命令以及MySQL-python程序包所需的库。MySQL-devel可在下载-社区服务器区域中找到这些软件包。MySQL开发库软件包名称MySQL-devel以MySQL版本和linux平台(例如MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm)为基础,并有所不同。

注意,您不需要安装mysql服务器。


8

不建议使用libmysqlclient-dev软件包,因此请使用以下命令对其进行修复。

软件包libmysqlclient-dev不可用,但是由另一个软件包引用。这可能意味着该软件包已丢失,已被废弃或只能从其他来源获得

sudo apt-get install default-libmysqlclient-dev


5

在我的Fedora 23机器上,我必须运行以下命令:

sudo dnf install mysql-devel


4

我认为,以下几行可以在终端上执行

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

该mysql_config目录用于MacOSx上的zend服务器。您可以像下面的几行一样在linux上做

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

这是默认的Linux mysql目录。


4

我遇到了这个问题,并通过将符号链接添加到来解决mysql_config

我已经用自制软件安装了mysql,并在输出中看到了这一点。

Error: The `brew link` step did not complete successfully

根据您的购买方式,mysql它会出现在不同的地方。以我为例,/usr/local/Cellar/mysql
一旦您知道它在哪里,就应该可以建立一个指向python寻找位置的符号链接。 /usr/local/mysql

这对我有用。

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config

4

我有同样的问题。我通过按照本教程在Ubuntu 16.04上使用python3-dev安装Python的方式解决了问题:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

现在您可以设置虚拟环境:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate

3

您需要安装python-dev软件包:

sudo apt-get install python-dev

2

须藤apt-get install python-mysqldb

Python 2.5?听起来您正在使用非常旧的Ubuntu Server版本(Hardy 8.04?)-请确认服务器使用的Linux版本。

在ubuntu软件包数据库上搜索python-mysql

一些其他信息:

从mysql-python的自述文件-

红帽Linux .............

MySQL-python已预包装在Red Hat Linux 7.x和更高版本中。这包括Fedora Core和Red Hat Enterprise Linux。您还可以如上所述构建自己的RPM软件包。

Debian GNU / Linux ................

打包为python-mysqldb_ ::

# apt-get install python-mysqldb

或使用Synaptic。

.. _ python-mysqldbhttp : //packages.debian.org/python-mysqldb

Ubuntu ......

与Debian相同。

脚注:如果您确实使用的服务器发行版早于Ubuntu 10.04,则您不受官方支持,因此应尽快升级。


我可以确认Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec '19


2

该方法仅适用于那些知道已安装Mysql但仍找不到mysql_config的用户。如果python安装无法在系统路径中找到mysql_config,则会发生这种情况,如果通过.dmg Mac Package完成安装或在某个自定义路径中进行安装,则通常会发生这种情况。MySqlDB最简单且记录在案的方法是更改site.cfg。找到可能位于/ usr / local / mysql / bin /中的mysql_config,然后像下面那样更改变量mysql_config,然后再次运行安装。不要忘记通过删除“#”取消注释

在行下更改

“ #mysql_config = / usr / local / bin / mysql_config”

“ mysql_config = / usr / local / mysql / bin / mysql_config”

取决于系统中的路径。

顺便说一句,我在更改site.cfg之后使用python安装

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py安装


2

到目前为止,所有解决方案(Linux)都需要具有sudoroot用户权限才能安装。如果您没有root权限且没有root权限,则这是一个解决方案sudo。(否sudo apt install ...):

  1. 从此镜像下载libmysqlclient-dev的.deb文件
  2. 导航到下载的文件并运行。dpkg -x libmysqlclient-dev_<version tag>.deb .这将提取一个名为的文件夹usr
  3. 符号链接./usr/bin/mysql_config到您的上找到的某个位置$PATH

    ln -s `pwd` /usr/bin/mysql_config FOLDER_IN_YOUR_PATH

  4. 现在应该可以找到 mysql_config

在Ubuntu 18.04上测试。


这在CentOS 7中有效吗?假设我没有安装root访问权限或dpkg,应该如何处理?
希尔

只要您在自己的虚拟环境中工作,就无需成为root用户
BlackBear

2

对于macOS Mojave,需要附加配置,编译器才能找到openssl,您可能需要设置:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

2

我认为在2020年解决此问题的最便捷方法是使用另一个python软件包。我们不需要安装任何其他二进制软件。

尝试这个

pip install mysql-connector-python

然后

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()


1

我遇到了同样的问题,只是将* mysql_config *所在的路径添加到环境变量PATH中,它对我有用。



1

由于实际错误是

gcc ... -I/usr/include/python2.7 ...

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

并且如果您无法安装python-dev或python-devel软件包,则可以从http://hg.python.org/下载包含所需版本的python源的存档,并将标头文件放置在正确的文件夹中,以包含


1

只需输入:

$ sudo apt-get install python-dev
$ venv/bin/pip install MySQL-python

这样可以解决这个问题。


3
如果您发现mysql_config错误,请执行以下操作:sudo apt-get install libmysqlclient-dev
Luciano D. Mota

1

在CentOS 7中,应执行以下操作:

#step1:install mysql 
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

#step2:
sudo yum install mysql-devel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.