安装mysqldb python接口时找不到mysql_config

Posted

技术标签:

【中文标题】安装mysqldb python接口时找不到mysql_config【英文标题】:mysql_config not found when installing mysqldb python interface 【发布时间】:2011-11-20 11:20:45 【问题描述】:

我正在尝试让 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?

【问题讨论】:

嗨@user904542 - 我已经编辑了你的问题,希望它更简洁一些,并给你一些答案:) 如果你不喜欢它,或者想提供更多细节,有一个直接在您的问题下方编辑链接,您可以使用该链接回滚到原始链接,或添加到我所做的更改中。 我遇到了完全相同的问题,因为我从源代码安装了 mysql。如果您也这样做,只需运行类似这样的命令以使 mysql_config 可用: sudo ln -s /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config 或将 /usr/local/mysql/bin/ 添加到您的路径中。 如果您已经安装了 mysql,Thi Duong Nguyen 的上述评论通过在 /usr/bin 目录中创建指向 mysql_config 文件的符号链接来解决问题,该文件位于 python 将搜索的路径中. 就这样做-------------apt-get install python-mysqldb @AlexBoschmans 符号链接/usr/bin 是错误的,它是usr/local/my...,请参阅这个答案。 【参考方案1】:

mySQLdb 是mysql 的python 接口,但它不是mysql 本身。显然 mySQLdb 需要命令 'mysql_config',所以你需要先安装它。

您能否通过从 shell 运行“mysql”来确认您是否安装了 mysql 本身?那应该会给您一个响应,而不是“mysql:找不到命令”。

您使用的是哪个 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

【讨论】:

Reading package lists...Done Building dependency tree Reading state information...Done 注意,选择 libmysqlclient15-dev 而不是 libmysqlclient-dev 有些包无法安装。这可能意味着您请求了一种不可能的情况,或者如果您使用的是不稳定的发行版,一些必需的软件包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:以下软件包具有未满足的依赖关系:libmysqlclient15-dev:依赖:zlib1g-dev 但不会安装 E:损坏的软件包 “sudo apt-get install mysql”应该是“sudo apt-get install mysql-server”吗? 请注意,对于 Debian,它是 sudo apt-get install mysql-serversudo apt-get install mysql-client 我们终于可以承认 'pip' 是一个巨大的失败吗?像这样的错误非常痛苦,而且它们似乎发生在大多数软件包中。 Python 急需一个新的包管理解决方案。 对于 Debian 上的我来说,它是 libmysqlclient-dev。事实上我已经安装了 libmariadbclient-dev libmysqlclient-dev【参考方案2】:

sudo apt-get install python-mysqldb

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

python-mysql search on ubuntu package database

一些附加信息:

来自 mysql-python 的 README -

红帽 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-mysqldb:http://packages.debian.org/python-mysqldb

Ubuntu ......

与 Debian 相同。

脚注:如果您确实使用的是早于 Ubuntu 10.04 的服务器发行版,那么您将失去官方支持,应该尽快升级。

【讨论】:

我可以确认 Debian 10 sudo apt-get install python-mysqldb 这就是你需要做的所有事情:dev.mysql.com/doc/connector-python/en/…【参考方案3】:

我通过安装 libmysqlclient 修复了它:

sudo apt-get install libmysqlclient16-dev

【讨论】:

【参考方案4】:

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服务器。

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

我在尝试安装 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 时遇到了同样的问题。这个解决方案也对我有用。【参考方案7】:

我在 Ubuntu 12.04 上使用

安装 python-mysql
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...

【讨论】:

在 openSUSE 上也可以工作,其中“libmysqlclient-dev”变成了“libmysqlclient-devel”。现在 pip 包安装正常。谢谢。 谢谢!也适用于 Ubuntu 14.04.1 LTS 安装 python 开发头文件解决了缺少的 Python.h 错误。谢谢。 如果使用python3.x,尝试使用apt-get install python3-dev。 这在 14.04 对我不起作用 - “E: Package 'python-dev' has no installation Candidate”【参考方案8】:

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

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

【讨论】:

运行 >= Debian Stretch 时,请确保安装 default-libmysqlclient-dev,因为常规的 libmysqlclient-dev 软件包没有安装候选者。【参考方案9】:

你需要安装python-dev包:

sudo apt-get install python-dev

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

 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 目录。

【讨论】:

【参考方案12】:

sudo apt-get build-dep python-mysqldb 将安装所有依赖项以从 PIP/easy_install 构建包

【讨论】:

【参考方案13】:

实际错误是

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 源的存档,并将头文件放在适当的文件夹中以供包含

【讨论】:

【参考方案14】:

sudo apt-get install libmysqlclient-dev sudo apt-get install python-dev sudo apt-get install MySQL-python

注意你也应该安装 python-dev,像 MySQL-python 这样的包是从源代码编译的。 pythonx.x-dev 包包含链接 python 所需的头文件。 Why does installing numpy require python-dev in Kubuntu 12.04

【讨论】:

【参考方案15】:

以下内容在 Ubuntu 12.04 LTS 上为我工作:

apt-get install libmysqlclient-dev python-dev

尽管它有效,但我仍然继续执行以下操作:

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

【讨论】:

【参考方案16】:

此方法仅适用于知道安装了Mysql但仍然找不到mysql_config的人。如果 python install 在您的系统路径中找不到 mysql_config 会发生这种情况,这主要发生在您通过 .dmg Mac 包完成安装或安装在某个自定义路径时。 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 install

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

【讨论】:

【参考方案17】:

在 Red Hat 上我必须这样做

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

然后它起作用了。

【讨论】:

在 CentOS 7 上为我工作:yum install MySQL-python 如果您需要将 MySQL-python 作为 Python 包安装,或者正在使用 virtualenv,这可能会有所帮助:yum install mysql-devel; venv/bin/pip install MySQL-python 如果你在CentOS 7上使用MariaDB,先运行sudo yum install mariadb-devel,然后你可以通过pip install mysqlclient安装mysqlclient 你从哪里得到 gcc-devel rpm? yum install mysql-devel Centos 8【参考方案18】:

只需输入:

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

这将解决这个问题。

【讨论】:

如果 mysql_config 出错,请安装此:sudo apt-get install libmysqlclient-dev【参考方案19】:

如果通过向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

【讨论】:

【参考方案20】:

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

sudo dnf install mysql-devel

【讨论】:

【参考方案21】:

对于 Alpine Linux:

$ apk add mariadb-dev mariadb-client mariadb-libs

MariaDB 是 drop-in replacement for MySQL,并成为 Alpine 3.2 的新标准。见https://bugs.alpinelinux.org/issues/4264

【讨论】:

这使我的 alpine 图像接近 500MiB,我来到 alpine 是为了获得更小的图像尺寸 我还必须安装 python3-dev 才能构建 lib【参考方案22】:

(特定于 Mac OS X)

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

    安装mysql
    brew install mysql
    
    brew unlink mysql brew install mysql-connector-c 将 mysql bin 文件夹添加到 PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
    
    mkdir /usr/local/Cellar/lib/ 创建符号链接
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
    
    brew reinstall openssl (source) 最后,安装mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient
    

更新: 如果这不起作用,@vinyll 建议在第 8 步之前运行brew link mysql

【讨论】:

对于第 4 步,使用 brew info mysql 获取 mysql 安装的实际/正确路径。然后要使 PATH 更改持续存在,请在 ~/.bash_profile 中执行 export PATH.. 步骤 1-4 与 brew link --overwrite mysql-connector-c 在我的 Mac 上工作 我必须在第 8 步之前执行brew link mysql 才能使其运行。 我将这些添加到我的.bashrcexport CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib",并且只运行了brew install mysql,并且成功了。还修复了所有未来的 pip 执行,以确保它们使用正确的 ssl 库。 我只做brew install mysql就足够了【参考方案23】:

在 centos 7 中这对我有用:

yum install mariadb-devel
pip install mysqlclient

【讨论】:

【参考方案24】:

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

    下载 libmysqlclient-dev 的 .deb 文件,例如来自this mirror 导航到下载的文件并运行dpkg -x libmysqlclient-dev_&lt;version tag&gt;.deb . 这将提取一个名为usr 的文件夹。

    ./usr/bin/mysql_config 符号链接到您的$PATH 上的某个位置:

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

    现在应该可以找到mysql_config

在 Ubuntu 18.04 上测试。

【讨论】:

这在 CentOS 7 中有效吗?假设我没有安装 root 访问权限或 dpkg,我应该如何处理它? 只要您在自己的虚拟环境中工作,就无需root用户【参考方案25】:

我遇到了同样的问题。我通过关注this tutorial 在 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

【讨论】:

【参考方案26】:

如果您在 macOS 上并且已经通过 brew install 安装了 mysql@5.7:

    brew install mysql-connector-c brew unlink mysql@5.7 brew link --overwrite --dry-run mysql@5.7 首先,看看哪些符号链接被覆盖了 brew link --overwrite --force mysql@5.7 用 mysql@5.7 覆盖与 mysql 相关的符号链接 pip install mysqlclient

【讨论】:

【参考方案27】:

对于 macOS Mojave ,需要额外的配置,以便编译器找到 openssl 您可能需要设置:

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

【讨论】:

【参考方案28】:

在 CentOS 7 中,应该做以下事情:

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

#step2:
sudo yum install mysql-devel

sudo yum install mysql-community-devel

【讨论】:

【参考方案29】:

Step1:-同时安装 Python3 和 Python3-dev

sudo apt-get install python3 python3-dev

第二步:- 安装 Python 和 Mysql 连接器

sudo apt-get install libmysqlclient-dev

step3:- 安装python mysql客户端

sudo apt-get install mysqlclient

这将解决您的问题

【讨论】:

第 2 步为我解决了这个问题。 这解决了困扰我 3 小时的问题。非常感谢!!!【参考方案30】:

软件包 libmysqlclient-dev 已弃用,因此请使用以下命令修复它。

包 libmysqlclient-dev 不可用,但被另一个包引用。 这可能意味着包丢失、已过时或 只能从其他来源获得

sudo apt-get install default-libmysqlclient-dev

【讨论】:

以上是关于安装mysqldb python接口时找不到mysql_config的主要内容,如果未能解决你的问题,请参考以下文章

Django启动时找不到mysqlclient处理 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

致命错误:安装 opencv 时找不到“Python.h”文件

安装 gulp-converter-tjs 时找不到 Python 可执行文件

在 python 中安装 Imblearn 时找不到版本错误

python-MySQLdb接口程序安装

在 osx 10.8 上安装 mysql-python 时找不到“my_config.h”文件