安装mysqldb python接口时找不到mysql_config

use*_*542 428 python linux ssh mysql-python

我试图让一个Python脚本在我通过ssh连接的linux服务器上运行.该脚本使用mysqldb.我有我需要的所有其他组件,但是当我尝试通过setuptools安装mySQLdb时,如:

python setup.py install
Run Code Online (Sandbox Code Playgroud)

我得到以下与该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
Run Code Online (Sandbox Code Playgroud)

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

ama*_*ion 629

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

你可以通过从shell运行"mysql"来确认你是否安装了mysql本身?这应该给你一个响应,而不是"mysql:command not found".

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

sudo apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)

mysql-config在一个不同的包中,可以安装(再次假设debian/ubuntu):

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

如果您正在使用mariadb,请更换mysql,然后运行

sudo apt-get install libmariadbclient-dev
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,Debian 是 libmysqlclient-dev。事实上,我已经安装了 libmariadbclient-dev libmysqlclient-dev (5认同)
  • 请注意,对于Debian来说,它是`sudo apt-get install mysql-server`和`sudo apt-get install mysql-client` (4认同)
  • 应该'sudo apt-get install mysql'是'sudo apt-get install mysql-server'? (2认同)
  • 我们最终可以承认“点子”是一个巨大的失败吗?像这样的错误是如此痛苦,并且大多数软件包似乎都在发生这种错误。Python迫切需要一种新的软件包管理解决方案。 (2认同)

xto*_*512 179

我正在python-mysql使用Ubuntu 12.04进行安装

pip install mysql-python
Run Code Online (Sandbox Code Playgroud)

首先我遇到了同样的问题:

Not Found "mysql_config"
Run Code Online (Sandbox Code Playgroud)

这对我有用

$ sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

然后我遇到了这个问题:

...
_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
Run Code Online (Sandbox Code Playgroud)

然后我尝试了

apt-get install python-dev
Run Code Online (Sandbox Code Playgroud)

然后我很开心:)

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...
Run Code Online (Sandbox Code Playgroud)

  • 如果使用python3.x,尝试使用apt-get install python3-dev. (3认同)

Ell*_*ott 33

在Red Hat我必须这样做

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python
Run Code Online (Sandbox Code Playgroud)

然后它奏效了.

  • 在CentOS 7上为我工作:`yum install MySQL-python` (3认同)
  • 同上几分钱 (2认同)
  • 如果你需要将 `MySQL-python` 作为 Python 包安装,或者正在使用 virtualenv,这可能会有所帮助: `yum install mysql-devel; venv/bin/pip 安装 MySQL-python`。 (2认同)
  • 如果您在CentOS 7上使用MariaDB,请先运行sudo yum install mariadb-devel,然后可以通过pip install mysqlclient安装mysqlclient。 (2认同)

Ani*_*ula 33

在 python 3.5.2 上

sudo apt-get install libmysqlclient-dev python-dev


小智 32

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

apt-get install libmysqlclient-dev python-dev
Run Code Online (Sandbox Code Playgroud)

尽管它起作用,我仍然继续做下面的事情:

export PATH=$PATH:/usr/local/mysql/bin/
Run Code Online (Sandbox Code Playgroud)


May*_*ain 25

我在尝试安装时遇到了同样的错误mysql-python.

这是我修复它的方式.

sudo PATH=/usr/local/mysql/bin/:$PATH pip install mysql-python
Run Code Online (Sandbox Code Playgroud)

问题是安装程序无法在默认路径中找到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...
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

谢谢.


zha*_*zhi 19

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

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

  • 当运行 &gt;= Debian Stretch 时,请确保安装 `default-libmysqlclient-dev`,因为常规的 `libmysqlclient-dev` 软件包没有安装候选。 (2认同)

sam*_*ize 18

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

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


Pul*_*hwa 18

(特定于mac)我已经尝试了很多东西,但这些命令最终对我有用.

  1. brew install mysql #install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH #upcate path并将mysql bin文件夹设置为path
  5. sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib #create symlink
  6. pip install mysqlclient #finally mysql-client终于

  • 在第 8 步之前我必须执行“brew link mysql”才能使其运行。 (12认同)
  • 对我来说只需执行 `brew install mysql` 就足够了 (9认同)

Raj*_*kar 17

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

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

sudo apt-get install default-libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)


小智 11

我认为在 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()
Run Code Online (Sandbox Code Playgroud)


tho*_*lin 9

我通过安装libmysqlclient来修复它:

sudo apt-get install libmysqlclient16-dev
Run Code Online (Sandbox Code Playgroud)


小智 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服务器.


ril*_*lut 7

如果您使用的是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


Aka*_*ari 7

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

sudo apt-get install python3 python3-dev
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install mysqlclient
Run Code Online (Sandbox Code Playgroud)

这将解决您的问题


Dac*_*hao 6

在 CentOS 7 中,需要完成以下几件事:

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

#step2:
sudo yum install mysql-devel
Run Code Online (Sandbox Code Playgroud)

或者

sudo yum install mysql-community-devel
Run Code Online (Sandbox Code Playgroud)


Mit*_*ana 6

另外,我也遇到了同样的问题 在此输入图像描述 我通过以下步骤解决了这个问题:首先我运行这个命令

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

然后我安装

pip install mysqlclient==2.1.0
Run Code Online (Sandbox Code Playgroud)

这对我有用


Sch*_*ter 5

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

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

Error: The `brew link` step did not complete successfully
Run Code Online (Sandbox Code Playgroud)

根据您的购买方式,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
Run Code Online (Sandbox Code Playgroud)


Rap*_*tor 5

在我的Fedora 23机器上,我必须执行以下操作:

sudo dnf install mysql-devel
Run Code Online (Sandbox Code Playgroud)


abo*_*ron 5

对于Alpine Linux:

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

MariaDB是MySQL的直接替代品,并成为Alpine 3.2的新标准.请参阅https://bugs.alpinelinux.org/issues/4264


Raj*_*rma 5

在centos 7中,这对我有用:

yum install mariadb-devel
pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)