【问题标题】:pip install mysql-python fails with EnvironmentError: mysql_config not foundpip install mysql-python 失败并出现 EnvironmentError: mysql_config not found
【发布时间】:2011-07-07 21:21:37
【问题描述】:

这是我得到的错误

(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

我能做些什么来解决这个问题?

【问题讨论】:

标签: python pip mysql-python


【解决方案1】:

您的系统上似乎缺少 mysql_config 或安装程序找不到它。 确保 mysql_config 确实已安装。

例如在 Debian/Ubuntu 上,您必须安装该软件包:

sudo apt-get install libmysqlclient-dev

可能mysql_config不在你的路径下,你自己编译的时候会这样 mysql 套件。

更新:对于最新版本的 debian/ubuntu(截至 2018 年)是

sudo apt install default-libmysqlclient-dev

【讨论】:

  • 这仍然对我造成了错误。我改用apt-get install python-mysqldb
  • 我的 2c 经验:sudo apt-get install libmysqlclient-dev 为我工作,sudo apt-get install python-mysqldb 没有帮助
  • @JonatanLittke 安装全局 python-mysqldb 有点违背 virtualenv IMO 的观点。
  • 对于 Mariadb,sudo apt-get install libmariadbclient-dev 成功了。
  • 如果这些解决方案不适合您,那么您可能仍需要安装 python-dev:apt-get install python-dev
【解决方案2】:

试试sudo apt-get build-dep python-mysqldb

【讨论】:

    【解决方案3】:

    在 Mac OS 中,我只是在终端中运行它来修复:

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

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

    (在 OSX Mountain Lion 中测试)

    【讨论】:

    • 如果你使用bitnami's MAMP stack,使用export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/bin 如果你使用this commercial MAMP stack,另一方面,卸载它并获取bitnami,因为它很糟糕并且不包含mysql 头文件。
    • 要使路径永久化,请将其添加到/etc/paths 的底部 - 您需要打开一个新的终端窗口才能访问新路径。
    • @Timmmm 相当昂贵的解决方案,因为我所有的数据库都在官方版本上:/还有其他方法可以解决这个问题吗?
    • 非常有帮助。如果您使用的是 XAMPP,请将其用作 export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
    • 这终于成功了,谢谢!此外,如果未安装mysql,请使用brew install mysql,位置为/usr/local/bin/mysql(或/usr/local/Cellar/mysql/VERSION/bin/,如果它没有符号链接)。
    【解决方案4】:

    您可以使用 MySQL 连接器/Python

    通过 PyPip 安装

    pip install mysql-connector-python
    

    更多信息可以在MySQL Connector/Python 1.0.5 beta announcement博客上找到。

    在 Launchpad 上,库中有 a good example of how to add-, edit- or remove data

    【讨论】:

    • 当我放弃 mysqldb 和丢失的 mysql_config 混乱时,这是唯一对我有用的东西。很适合我的目的。
    • @wjoba 你能进一步解释一下吗?我正在安装 py-mysql2pgsql 并发现 mysql_config 的错误。我正在使用 MAMP。 mysqk 连接器有什么作用?
    • @Volatil3 mysql-connector-python 对我来说是 mysql-python 的开箱即用替代品。通过 pip 安装前者没有任何问题,并且消除了 mysql_config 错误,因为(用开发人员自己的话说)mysql 连接器是“纯 Python,不需要任何其他 MySQL 软件,因此不需要 C 库和编译。”希望有帮助。尝试这个解决方案中提到的安装,看看是否仍然遇到错误。
    • 在 Ubuntu 14/4 上,我得到:找不到任何满足 mysql-connector-python 要求的下载
    【解决方案5】:
    apt-get install libmysqlclient-dev python-dev
    

    似乎成功了。

    【讨论】:

    • 是的,对我来说只有 libmysqlclient-dev 还不够,python-dev 也不见了。
    • 在 Ubuntu 12.04 (precise) (32-Bit) 上从 10.04 (lucid) 就地升级后,只有这确实解决了这些错误。特别是附加的“python-dev”!
    • 也为我工作——python-dev 是最后一块拼图。已经安装了 python-mysqldb,所以这绝对不是所有需要的。
    • 更新:对于 Python3,您必须安装 python3-dev
    • 我需要这样做并安装gcc 才能成功安装。此外,最好不要使用python-dev,而是指定特定版本,例如python2.7-devpython3.6-dev 等。
    【解决方案6】:

    我试图在 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
    

    这样就成功了。

    【讨论】:

    • 我在我的 virtualenv 之外使用了:sudo yum install mysql mysql-devel mysql-common mysql-libs gcc outside。然后,我回到我的虚拟环境并运行pip install mysql-python,它成功了。
    • dnf install mysql-devel gcc 对我来说已经足够了,这取决于其余的
    • python-devel 现在会报错,如果使用 python 2.7 试试这个python27-devel
    【解决方案7】:

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

    对于 Ubuntu:

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

    对于 CentOS:

    $ yum install python-devel mysql-devel
    

    【讨论】:

    • 感谢 centos 提示。我整个上午都在追这个。
    • 也许值得添加python3-dev / python3-devel
    【解决方案8】:

    OSX 小牛队

    由于 osx mavericks 和 xcode 开发工具的变化,您可能会在安装时遇到错误

    clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
    

    因此使用:

    sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mysql-python
    

    【讨论】:

      【解决方案9】:

      尝试在 OS X Server 10.6.8 上安装时遇到类似问题。这是我必须做的。 使用:

      MySQL-python 1.2.4b4(来源) MySQL-5.6.19(二进制安装程序) Python 2.7(二进制安装程序) 注意:在 virtualenv 中安装...

      解压源代码,打开“distribute_setup.py”并编辑 DEFAULT_VERSION 以使用最新版本的分发工具,如下所示:

      DEFAULT_VERSION = "0.6.49"
      

      保存。打开“site.cfg”文件并取消注释 mysql_config 的路径,使其看起来像(参考您自己的 mysql_config 路径):

      # The path to mysql_config.
      # Only use this if mysql_config is not on your PATH, or you have some weird
      # setup that requires it.
      mysql_config = /usr/local/mysql/bin/mysql_config
      

      现在 clean、build 和 make 不会因 'mysql_config' not found 错误而失败。 希望这可以帮助其他人尝试使用他们的旧 xserve :-)

      【讨论】:

        【解决方案10】:

        对于使用 MariaDB 而不是 MySQL 的任何人,解决方案是安装 libmariadbclient-dev 包并使用正确名称创建指向配置文件的符号链接。

        例如这对我有用:

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

        【讨论】:

        • 这是一个被低估的答案,在任何想要连接到特定的已知数据库套接字的情况下都非常有用。它帮助我连接到一个独立的 mysql 数据库。这里的大多数解决方案只是建议重新安装(或安装第二个或第三个...等)msql 客户端!
        【解决方案11】:

        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

        【讨论】:

        • 这听起来好像您没有正确的包含文件来安装 Python 二进制文件 pip。 Python 本身通常提供包含位置;手动指定路径最有可能指向错误版本
        • 由于错误,我不得不执行sudo pip install MySQL-pythoncopying build/lib.linux-x86_64-2.7/_mysql_exceptions.py -&gt; /usr/lib64/python2.7/site-packages error: /usr/lib64/python2.7/site-packages/_mysql_exceptions.py: Permission denied
        【解决方案12】:

        您的 sudo 路径不知道您的本地路径...进入超级用户模式,添加路径,然后从那里安装。

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

        您已在 OSX 上启动并运行。现在你有一个更新的全局 python。

        【讨论】:

          【解决方案13】:

          有时错误取决于实际原因。我们有一个通过 python-mysqldb debian 包安装 mysql-python 的案例。

          一个不知道这一点的开发人员,不小心运行了pip uninstall mysql-python,然后由于pip install mysql-python 出现上述错误而无法恢复。

          pip uninstall mysql-python 破坏了 debian 包的内容,当然pip install mysql-python 失败了,因为 debian 包不需要任何开发文件。

          在这种情况下,正确的解决方案是 apt-get install --reinstall python-mysqldb,它将 mysql-python 恢复到其原始状态。

          【讨论】:

            【解决方案14】:

            为 mariadb 安装 libma​​riadbclient-dev 而不是 libmysqlclient-dev

            sudo apt-get install libmariadbclient-dev
            

            【讨论】:

            • 正是我在使用 Debian 9 Stretch 和 MariaDB 时所需要的
            【解决方案15】:

            如果您使用的是 MAC 全局安装

            brew install mysql
            

            然后像这样导出路径

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

            比全局或在你喜欢的任何地方

            pip install MySQL-Python
            

            注意:全局用于 python3,因为 Mac 可以同时拥有 python2 和 3

            pip3 install MySQL-Python
            

            【讨论】:

            【解决方案16】:

            你应该先安装mysql

            yum install python-devel mysql-community-devel -y
            

            然后就可以安装mysqlclient:

            pip install  mysqlclient
            

            【讨论】:

              【解决方案17】:

              如果您在虚拟环境中安装 MySQL-python,您应该检查 pip 版本,如果版本低于 9.0.1,请更新它

              pip install --upgrade pip
              

              【讨论】:

              【解决方案18】:

              我在 Terraform:light 容器中遇到了同样的问题。它基于 Alpine。

              你必须安装 mariadb-dev :

              apk add mariadb-dev
              

              但这还不够,因为还遗漏了所有其他依赖项:

              apk add python2 py2-pip gcc python2-dev musl-dev
              

              【讨论】:

                【解决方案19】:

                要遵循的顺序。

                pip install mysqlclient
                sudo apt-get install python3-dev libmysqlclient-dev
                pip install configparser 
                sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py 
                

                然后尝试再次安装 MYSQL-python。这对我有用

                【讨论】:

                  【解决方案20】:

                  适用于 Linux

                  这对我有用

                  yum install python-devel mysql-devel
                  

                  【讨论】:

                    【解决方案21】:

                    在 MacOS Mojave 上,mysql_config 位于 /usr/local/bin/ 而不是上面指出的 /usr/local/mysql/bin,因此无需向路径添加任何内容。

                    【讨论】:

                      【解决方案22】:

                      在我的情况下,当我尝试更新代码时,我的数据库正在容器上运行,而我的烧瓶应用程序正在另一个容器上运行,应用程序因错误而崩溃

                         Complete output from command python setup.py egg_info:
                      /bin/sh: 1: mysql_config: not found
                      /bin/sh: 1: mariadb_config: not found
                      /bin/sh: 1: mysql_config: not found
                      Traceback (most recent call last):
                        File "<string>", line 1, in <module>
                        File "/tmp/pip-build-bya8e734/mysqlclient/setup.py", line 15, in <module>
                          metadata, options = get_config()
                        File "/tmp/pip-build-bya8e734/mysqlclient/setup_posix.py", line 65, in get_config
                          libs = mysql_config("libs")
                        File "/tmp/pip-build-bya8e734/mysqlclient/setup_posix.py", line 31, in mysql_config
                          raise OSError("{} not found".format(_mysql_config_path))
                      OSError: mysql_config not found
                      

                      堆栈跟踪中的键是

                      /bin/sh: 1: mysql_config: not found
                      

                      因为我的烧瓶应用程序运行的地方没有正确配置mysql客户端所以我首先安装了mysql服务器然后安装

                      sudo apt-get install mysql-server-5.7 -y
                      

                      然后启动 MySQL

                      mansoor@LARC-mansur:~/Documents/clients/HR/DevopsSimulator/web$ sudo systemctl start mysql
                      

                      然后安装flask-mysql包,这次成功了

                      mansoor@LARC-mansur:~/Documents/clients/HR/DevopsSimulator/web$ sudo pip3 install flask-mysqldb
                      

                      这是不同的情况,但在这里发帖是因为世界上可能有其他人面临同样的问题

                      【讨论】:

                        【解决方案23】:

                        在 Mac 上:

                        brew install mysql-client
                        

                        找到mysql

                        mdfind mysql | grep bin
                        

                        然后添加到路径

                        export PATH=$PATH:/usr/local/Cellar/mysql-client/8.0.23/bin/
                        

                        或永久

                        echo "export PATH=$PATH:/usr/local/Cellar/mysql-client/8.0.23/bin/" >> ~/.zshrc
                        source ~/.zshrc
                        

                        【讨论】:

                          【解决方案24】:

                          写于 2021 年 8 月 27 日

                          我的macos版本是BigSur(14.4),mysql版本是mysql8。似乎在更高版本的mysql中,他们删除了my_config.h文件但更改为mysql.h

                          所以你们应该运行以下 shell:

                          cd /usr/local/include/mysql
                          cp mysql.h my_config.h
                          

                          之后,运行pip install MySQL-python,一切都会好起来的。

                          【讨论】:

                            猜你喜欢
                            • 2015-11-27
                            • 2014-10-17
                            • 2020-09-16
                            • 2014-02-23
                            • 2018-05-31
                            • 1970-01-01
                            相关资源
                            最近更新 更多