【问题标题】:mysql_config not found when installing mysqldb python interface安装mysqldb python接口时找不到mysql_config
【发布时间】: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...,请参阅这个答案。

标签: python linux ssh mysql-python


【解决方案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 的服务器发行版,那么您将失去官方支持,应该尽快升级。

【讨论】:

【解决方案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)

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

                            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 (source)
                            8. 最后,安装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 ...):

                              1. 下载 libmysqlclient-dev 的 .deb 文件,例如来自this mirror
                              2. 导航到下载的文件并运行dpkg -x libmysqlclient-dev_&lt;version tag&gt;.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用户
                              【解决方案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:

                                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

                                【讨论】:

                                  【解决方案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
                                      

                                      【讨论】:

                                        猜你喜欢
                                        • 2014-05-21
                                        • 2015-07-14
                                        • 1970-01-01
                                        • 2013-07-08
                                        • 2011-06-11
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多