安装mysqldb python接口时找不到mysql_config
Posted
技术标签:
【中文标题】安装mysqldb python接口时找不到mysql_config【英文标题】:mysql_config not found when installing mysqldb python interface 【发布时间】: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...
,请参阅这个答案。
【参考方案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-server
和 sudo 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 的服务器发行版,那么您将失去官方支持,应该尽快升级。
【讨论】:
我可以确认 Debian 10 sudo apt-get install python-mysqldb 这就是你需要做的所有事情:dev.mysql.com/doc/connector-python/en/…【参考方案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 installsudo /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)
我尝试了很多东西,但这些命令最终对我有用。
-
安装
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..
。
步骤 1-4 与 brew link --overwrite mysql-connector-c
在我的 Mac 上工作
我必须在第 8 步之前执行brew link mysql
才能使其运行。
我将这些添加到我的.bashrc
:export 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 ...
):
-
下载 libmysqlclient-dev 的 .deb 文件,例如来自this mirror
导航到下载的文件并运行
dpkg -x libmysqlclient-dev_<version tag>.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用户【参考方案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:
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@5.7 覆盖与 mysql 相关的符号链接
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
【讨论】:
以上是关于安装mysqldb python接口时找不到mysql_config的主要内容,如果未能解决你的问题,请参考以下文章
Django启动时找不到mysqlclient处理 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
致命错误:安装 opencv 时找不到“Python.h”文件
安装 gulp-converter-tjs 时找不到 Python 可执行文件