Mac OS X - 环境错误:找不到mysql_config

153

首先,是的,我已经看到了这个链接:

pip安装mysql-python失败,报错:EnvironmentError: mysql_config not found

问题

我正在尝试在Google App Engine项目上使用Django。然而,由于以下原因,我无法成功启动服务器:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

我进行了一些研究,所有的指向都是必须安装Mysql-python,因为显然它不在我的系统上。实际上我尝试卸载它并得到了这个错误:

Cannot uninstall requirement mysql-python, not installed

每当我真正尝试通过以下方式安装时:

sudo pip install MySQL-python

我收到一个错误提示:

raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

我已经尝试过运行:

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

但是这似乎没有帮助,因为我再次运行安装命令时它仍然失败了。

有任何想法吗?

请注意我不在虚拟环境中。


你可以随时访问引发 EnvironmentError 的文件并打印更有用的调试信息,例如 os.getcwd()。你也可以添加 pdb.set_trace() 并找出问题所在。 - ealfonso
10个回答

411

好的,首先,让我确认一下是否与您在同一页上:

  • 您已安装Python。
  • 您执行了brew install mysql
  • 您执行了export PATH=$PATH:/usr/local/mysql/bin
  • 最后,您执行了pip install MySQL-Python(如果使用Python 3,则使用pip3 install mysqlclient)。

如果您按照相同的顺序执行了所有这些步骤,但仍然遇到错误,请继续阅读本文。但是,如果您没有按照这些确切的步骤进行操作,请尝试从一开始就按照这些步骤进行操作。

所以,您按照了这些步骤,但仍然遇到错误,那么您可以尝试以下几个方法:

  1. 尝试从bash中运行which mysql_config。可能找不到它。这就是为什么构建也找不到它的原因。尝试运行locate mysql_config,看看是否会返回任何内容。这个二进制文件的路径需要在您的shell的$PATH环境变量中,或者它需要明确地位于安装模块的setup.py文件中,假设它正在某个特定的位置查找该文件。

  2. 尝试使用'mysql-connector-python'而不是MySQL-Python,可以使用pip install mysql-connector-python进行安装。有关此内容的更多信息,请单击此处此处

  3. 手动查找“mysql/bin”、“mysql_config”和“MySQL-Python”的位置,并将所有这些添加到$PATH环境变量中。

如果以上步骤都失败了,您可以尝试使用MacPorts安装“mysql”,在这种情况下,“mysql_config”文件实际上将被称为“mysql_config5”,在此情况下,您需要在安装后执行以下操作:export PATH=$PATH:/opt/local/lib/mysql5/bin。您可以在这里找到更多详细信息。
注意1:我看到有些人说安装python-devlibmysqlclient-dev也有帮助,但我不知道这些包是否适用于Mac OS。
注意2:另外,请确保尝试以root身份运行命令。
我从以下地方获得了答案(除了我的大脑)(也许您可以看看它们,看看它们是否有所帮助):1234
希望我提供的信息有所帮助,如果有用或无效,请让我知道。祝您好运。

2
很好的解释,顺便说一下,在Linux上,安装python-dev和libmysqlclient-dev通常是唯一需要做的事情,就可以使其正常工作,但在OSX上,我只需要更新我的路径。我相信在Linux上,如果你不安装所指示的开发库,你可以安装MySQL而不需要获取mysql-python的Python依赖项。(犯了这么多次错误,哈哈) - Iain Duncan
1
升级到Yosemite后,它现在也抱怨缺少“stdio.h”。您可以通过访问此处解决:https://dev59.com/j2Ik5IYBdhLWcg3wG6zb#20150282 - Mihai Oprea
4
运行brew install mysql解决了问题。此外,这个命令which mysql-config对我没有用,但which mysql_config有用。 - Chad
1
жҲ‘иҝҳйңҖиҰҒеңЁжҲ‘зҡ„.bash_profileж–Ү件дёӯж·»еҠ иҝҷдёҖиЎҢпјҡexport DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/ - JeffThompson
2
我必须指向brews安装路径 export PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin - Climbs_lika_Spyder
显示剩余9条评论

14

如果您不想安装完整的MySQL,我们可以通过仅安装mysql-client来解决此问题。

brew install mysql-client

执行完 cmd命令后,会要求将以下行添加到~/.bash_profile文件中:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile 

关闭当前终端,打开新终端并运行pip install mysqlclient安装mysqlclient。


1
实际上是 brew install mysql-client - supreme Pooba

10

我一直在调试这个问题,已经持续了3小时17分钟。特别让我恼火的是,我之前在大学的工作中已经安装了sql,但是pip/pip3无法识别它。我在互联网上搜索了许多线程,包括上面提到的和其他的线程,虽然对解决问题有所帮助,但并没有真正解决问题。

答案

Pip正在Homebrew目录中寻找mysql二进制文件,该目录相对于Macintosh HD@处。

/usr/local/Cellar/

我发现这需要您进行一些更改。
步骤1:如果尚未下载,请下载MySQL https://dev.mysql.com/downloads/ 步骤2:相对于 Macintosh HD 找到它并cd。
/usr/local/mysql/bin

步骤3:打开终端并使用所选的文本编辑器 - 我个人比较喜欢neovim,因此我键入了以下命令(在Mac上不会自动安装...另一个故事)。

nvim mysql_config

步骤四:您将在大约112行处看到。
# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

改为

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

您会注意到此文件具有只读访问权限,因此如果您使用vim或neovim,则需要以读取方式打开。

:w !sudo tee %

步骤五:前往主目录并编辑 .bash_profile 文件。
cd ~

那么

nvim .bash_profile

并添加

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

把内容添加到文件中,然后保存

步骤6:相对于Macintosh HD定位路径并添加到其中

cd /private/etc/

然后。
nvim paths

并添加

/usr/local/mysql/bin

你会再次注意到,这个文件只有只读权限,所以如果你使用vim或neovim

:w !sudo tee % 

那么

cd ~

然后通过运行命令刷新终端以应用您的更改

source .bash_profile

最终
pip3 install mysqlclient

完成了。记住这是一种氛围。


我的 mysql_config 中的 libs 已经按照“更改为”部分所述进行了设置。然而,将路径添加到 private/etc 有助于允许之前失败的 mysqlclient 的全局安装。 - martin-martin
我已经全局安装了它,但仍然无法在我的虚拟环境中安装。看起来像是一些mysql_config错误。有没有关于如何在本地安装它的想法? - Umang

5

如果您使用 Homebrew 指定版本安装了mysql,则 mysql_config 将出现在这里。- /usr/local/Cellar/mysql@5.6/5.6.47/bin

您可以在/usr/local/ 目录中使用ls命令查找sql二进制文件的路径。

/usr/local/Cellar/mysql@5.6/5.6.47/bin

像这样将路径添加到bash配置文件中。

nano ~/.bash_profile

export PATH="/usr/local/Cellar/mysql@5.6/5.6.47/bin:$PATH"

4
我正在MacOS Catalina上运行Python 3.6。我的问题是我试图安装mysqlclient==1.4.2.post1,但它一直抛出mysql_config未找到的错误。
以下是我解决问题所采取的步骤。
  1. 使用brew安装mysql-connector-c(如果您已经安装了mysql,请先unlink brew unlink mysql) - brew install mysql-connector-c
  2. 打开mysql_config并编辑文件的第112行左右
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - 这将提供更多有关将openssl放入PATH的信息。
  2. 与步骤3相关,您需要执行以下操作将openssl放入PATH-echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. 为了让编译器找到openssl-export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. 为了让编译器找到openssl-export CPPFLAGS="-I/usr/local/opt/openssl/include"

谢谢!我尝试了很多方法,你的方法对我有用。 - Yagimutsu

3
同时,当我安装mysqlclient时遇到了这个问题。
$ pip install mysqlclient

正如用户3429036所说,
$ brew install mysql

2
这个答案适用于没有使用brew而是从官方的.dmg/.pkg安装MySQL的MacOS用户。该安装程序无法编辑您的PATH,导致一些问题无法解决:

  1. 所有MySQL命令,如mysqlmysqladminmysql_config等都无法找到,因此:
  2. "MySQL Preference Pane"在系统偏好设置中无法显示,
  3. 您无法安装任何与MySQL通信的API,包括mysqlclient

您需要在~/.bash_profile文件中添加以下行,将MySQL的bin文件夹(通常为/usr/local/mysql/bin)添加到您的PATH中:

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

然后重新加载~/.bash_profile,使更改生效:

source ~/.bash_profile

在安装mysqlclient之前,您需要接受XcodeBuild许可证:

sudo xcodebuild -license

按照他们的指示放弃您的家庭,之后您应该能够无问题地安装mysqlclient

pip install mysqlclient

安装完毕后,您必须执行一项操作来修复MySQL中出现的运行时错误(动态库 libmysqlclient.dylib 未找到),方法是将此行添加到系统动态库路径中:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH


在运行 sudo lsof -i :3306 查看活动 MySQL 进程的 PID,然后在该进程上运行 sudo -P <pid> 来查看它的打开文件后,我发现磁盘上的二进制文件并看到了你的答案。这给出了 /usr/local/mysql-8.0.18-macos10.14-x86_64/bin,所以我将其添加到 $PATH 中,完成! - Neil C. Obremski
我也从 .dmg 安装了软件。对我来说有效的主要事情是执行 pip install mysql-connector-python - shawn caza

2

brew install mysql将mysql添加到/usr/local/Cellar/...,所以我需要将:/usr/local/Cellar/添加到我的$PATH中,然后which mysql_config就可以工作了!


0
在我的情况下,问题是我在Python虚拟环境中运行命令,但它没有路径到/usr/local/mysql/bin,尽管我已经将其放入了.bash_profile文件中。只需在虚拟环境中导出路径即可解决问题。
顺便提一下,sql_config位于bin目录中。

-1

安装brew或apt-get对我来说也不容易,所以我通过https://dev.mysql.com/downloads/connector/python/下载了mysql并进行了安装。这样我就可以在此目录中找到mysql_config:/usr/local/mysql/bin

下一步是:

  1. export PATH=$PATH:/usr/local/mysql/bin
  2. pip install MySQL-python==1.2.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接