ChatGPT解决这个技术问题 Extra ChatGPT

安装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?

嗨@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...,请参阅 Thi 的答案。

a
almanegra

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
我们能否最终承认“点子”是一个巨大的失败?像这样的错误是如此痛苦,而且它们似乎发生在大多数软件包中。 Python 急需一个新的包管理解决方案。
对于 Debian 上的我来说,它是 libmysqlclient-dev。事实上我已经安装了 libmariadbclient-dev libmysqlclient-dev
E
Eli Harold

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

在 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”
P
Pulkit Pahwa

(特定于 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..
使用 brew link --overwrite mysql-connector-c 的第 1-4 步适用于我的 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就足够了
E
Elliott

在红帽上我必须做

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
A
Anil Koppula

在 python 3.5.2 上

sudo apt-get install libmysqlclient-dev python-dev


mariadb 包的工作方式也很迷人:libmariadb-dev
p
pb2q

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

apt-get install libmysqlclient-dev python-dev

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

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

M
Mayank R Jain

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

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

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

当运行 >= Debian Stretch 时,请确保安装 default-libmysqlclient-dev,因为常规的 libmysqlclient-dev 软件包没有安装候选者。
s
samwize

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

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


A
Akash

Step1:-安装Python3 & Python3-dev 两者

sudo apt-get install python3 python3-dev

Step2:- 安装 Python & Mysql 连接器

sudo apt-get install libmysqlclient-dev

step3:- 安装python mysql客户端

sudo apt-get install mysqlclient

这将解决您的问题


第 2 步为我解决了这个问题。
这解决了困扰我 3 小时的问题。非常感谢!!!
R
Rajathithan Rajasekar

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

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

sudo apt-get install default-libmysqlclient-dev

x
xfdywy

我认为在 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('插入测试值 (null, "a",10)') mydb.commit() mydb.disconnect()


l
luthfianto

如果您在 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-与 mysql@5.7 pip install mysqlclient 相关的符号链接


t
thoslin

我通过安装 libmysqlclient 修复了它:

sudo apt-get install libmysqlclient16-dev

R
Rajiv Sharma

在 centos 7 这对我有用:

yum install mariadb-devel
pip install mysqlclient

G
Gaur93

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


a
aboutaaron

对于高山 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
R
Raptor

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

sudo dnf install mysql-devel

h
hkulekci

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

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


S
Schechter

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

L
Little Brain

我有同样的问题。我按照 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

c
caot

在 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

M
McGarnagle

你需要安装 python-dev 包:

sudo apt-get install python-dev

G
Gary

sudo apt-get install python-mysqldb

蟒蛇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

或者使用突触。

.._python-mysqldbhttp://packages.debian.org/python-mysqldb

乌班图......

与 Debian 相同。

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


我可以确认 Debian 10 sudo apt-get install python-mysqldb
这就是您需要做的所有事情:dev.mysql.com/doc/connector-python/en/…
A
Ahsan.Amin

此方法仅适用于知道已安装 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


R
RunOrVeith

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

下载 libmysqlclient-dev 的 .deb 文件,例如从此镜像 导航到下载的文件并运行 dpkg -x libmysqlclient-dev_.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
H
Haidar Zeineddine

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

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

f
flyer

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


T
Thomas Grainger

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


O
Oleg Neumyvakin

由于实际错误是

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