安装mysqldb python接口时未找到Mysql_config

我试图让一个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?

637932 次浏览

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

你能确认你是否安装了mysql本身,通过运行“mysql”从shell?这应该给你一个响应,而不是“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
< p >参考: # EYZ0 < / p >

使用apt-get install python-mysqldb

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

python-mysql搜索ubuntu包数据库

一些附加信息:

来自mysql-python -的README

红帽Linux ............. MySQL-python是在Red Hat Linux 7中预先打包的。X和更新的。这 包括Fedora核心和红帽企业Linux。你也可以

< p > Debian GNU / Linux ................

打包为python-mysqldb_::

# apt-get install python-mysqldb

或者使用Synaptic。

.. _ # EYZ0: # EYZ1

< p > Ubuntu …< / p >

和Debian一样。

脚注:如果你使用的是比Ubuntu 10.04更老的服务器,那么你已经不受官方支持了,应该尽早升级。

我通过安装libmysqlclient来解决这个问题:

sudo apt-get install libmysqlclient16-dev

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

来自dev.mysql.com的MySQL开发库包(MySQL-dev -xxx)提供了该命令和MySQL-python包所需的库。MySQL-devel包可以在下载社区服务器区域找到。MySQL开发库包名称以MySQL-devel开头,根据MySQL版本和linux平台(例如MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm)而有所不同。

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

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

# EYZ0

当我试图安装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...

希望这能有所帮助。

谢谢。

我正在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

(如果使用python3,则安装python3-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...

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

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

您需要安装python-dev包:

sudo apt-get install python-dev

我遇到了同样的问题,只是将*mysql_config*所在的路径添加到环境变量path中,它为我工作。

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

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

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

实际误差是

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

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进行链接所需的头文件。# EYZ0

下面是我在Ubuntu 12.04 LTS上使用的:

apt-get install libmysqlclient-dev python-dev

尽管它很有效,但我还是继续做了下面的事情:

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

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

以下更改

mysql_config = /usr/local/bin/mysql_config

mysql_config = /usr/local/ mysql_bin /mysql_config"

这取决于系统中的路径。

顺便说一下,我使用python安装后更改了site.cfg

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

在红帽上,我不得不这么做

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

然后就成功了。

类型:

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

这将解决这个问题。

我有这个问题,并通过添加一个符号链接到mysql_config来解决。

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

Error: The `brew link` step did not complete successfully
根据你如何获得mysql,它将在不同的地方。在我的例子中/usr/local/Cellar/mysql
一旦你知道了它的位置,你就应该能够创建一个符号链接,指向python正在寻找它的地方。# EYZ0 < / p >

这对我很管用。

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

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

sudo dnf install mysql-devel

对于Alpine Linux:

# EYZ0

MariaDB是MySQL的临时替代品,并在Alpine 3.2成为新标准。看到# EYZ1

(针对Mac OS X)

我尝试了很多方法,但这组命令最终对我有用。

    <李> # EYZ0安装
    brew install mysql
    
  1. brew unlink mysql
  2. brew install mysql-connector-c
  3. Add the mysql bin folder to PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
    
  4. mkdir /usr/local/Cellar/lib/
  5. Create a symlink
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
    
  6. brew reinstall openssl (source)
  7. Finally, install mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient
    

Update: In case this doesn't work, @vinyll suggests to run brew link mysql before step 8.

这对我来说很管用:

yum install mariadb-devel
pip install mysqlclient
到目前为止,所有的解决方案(Linux)都需要sudo或root权限来安装。 如果您没有根权限并且没有sudo,这里有一个解决方案。(没有# EYZ1): < / p >
  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上测试。

我也有同样的问题。我通过使用本教程在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

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

  1. # EYZ0
  2. # EYZ0
  3. brew link --overwrite --dry-run mysql@5.7,以查看哪些符号链接被覆盖
  4. brew link --overwrite --force mysql@5.7使用mysql@5.7实际覆盖mysql相关的符号链接
  5. # EYZ0

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

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

在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

步骤1:# EYZ0

sudo apt-get install python3 python3-dev

步骤2:# EYZ0

sudo apt-get install libmysqlclient-dev

步骤3:- - - - - - # EYZ0

sudo apt-get install mysqlclient

这将解决你的问题

libmysqlclient-dev包已弃用,因此使用下面的命令来修复它。

包libmysqlclient-dev不可用,但由另一个包引用。 这可能意味着包丢失了,已经过时了,或者

sudo apt-get install default-libmysqlclient-dev

在CentOS 7中,yum install mysql-devel改为yum install mysql-community-devel

这并不需要你添加mysql回购。

在MacOS (OS/X) Catalina上,我发现我需要这样做:

 export PATH=$PATH:/usr/local/bin/:/usr/local/mysql-5.7.16-osx10.11-x86_64/bin/

在我的电脑上,mysql命令位于/usr/local/bin中(来自标准MacOS安装程序,而不是“brew”)。

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

试试这个

# EYZ0

然后

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()

python 3.5.2 +任何未来版本

# EYZ0

同样,我得到同样的问题 enter image description here 我通过以下步骤解决了这个问题: 首先我运行这个命令

sudo apt-get install libmysqlclient-dev

然后安装

pip install mysqlclient==2.1.0

这对我来说很管用