Mac OS X - EnvironmentError: 找不到 mysql_config

153 投票
10 回答
183255 浏览
提问于 2025-04-18 18:16

首先,是的,我已经看到这个问题了:

使用pip安装mysql-python时出现环境错误:找不到mysql_config

问题

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

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

有什么想法吗?

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

10 个回答

4

我在MacOS Catalina上运行Python 3.6。我的问题是我尝试安装mysqlclient==1.4.2.post1时,总是出现找不到mysql_config的错误。

这是我解决这个问题的步骤。

  1. 使用brew安装mysql-connector-c(如果你已经安装了mysql,先执行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"
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"
10

我花了很长时间调试这个问题,整整3小时17分钟。让我特别烦的是,我之前在大学的时候已经在系统上安装了sql,但pip/pip3却没有识别到它。我在网上找了很多相关的帖子,虽然它们对我理解问题有帮助,但并没有真正解决我的问题。

解决方案

Pip在寻找mysql的程序文件时,会在Homebrew目录下查找,而这个目录是相对于Macintosh HD的。

/usr/local/Cellar/

所以我发现需要做一些更改。

第一步:如果还没有下载MySql,请先去https://dev.mysql.com/downloads/下载。

第二步:找到它在Macintosh HD下的位置,然后进入该目录。

/usr/local/mysql/bin

第三步:到了那里后,打开终端,使用你喜欢的文本编辑器——我自己用的是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"

到文件中,然后保存。

第六步:相对于Macintosh HD找到路径并添加到其中。

cd /private/etc/

然后

nvim paths

添加:

/usr/local/mysql/bin

*你会再次注意到这个文件是只读的,所以如果你使用vim或neovim的话……

:w !sudo tee % 

然后

cd ~

通过运行来刷新终端以应用你的更改:

source .bash_profile

最后

pip3 install mysqlclient

就这样。记得保持轻松的心态。

14

如果你不想安装完整的mysql数据库,我们可以通过只安装 mysql-client 来解决这个问题。

brew install mysql-client

当命令执行完后,它会提示你在 ~/.bash_profile 文件中添加下面这一行:

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

关闭终端,然后重新打开一个新的终端,接着继续执行 pip install mysqlclient

411

好的,首先让我确认一下我们是否在同一个频道上:

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

如果你按照这个顺序做了所有步骤,但仍然遇到错误,请继续往下看。如果你没有严格按照这些步骤来,建议你从头开始试一次。

那么,如果你按照步骤做了,但还是出错了,可以尝试以下几种方法:

  1. 在终端中运行 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 环境变量中。

  4. 如果以上步骤都不行,可以尝试使用 MacPorts 安装 'mysql',在这种情况下,'mysql_config' 文件实际上会叫 'mysql_config5',你需要在安装后执行: export PATH=$PATH:/opt/local/lib/mysql5/bin。你可以在 这里 找到更多细节。

注意1:我见过一些人说安装 python-devlibmysqlclient-dev 也有帮助,但我不知道这些包在 Mac OS 上是否可用。

注意2:另外,确保以 root 用户身份运行这些命令。

我从(除了我自己的脑袋)这些地方得到了答案(也许你可以看看,看看是否能帮到你): 1234

希望这些信息对你有帮助,也很想知道这些方法是否有效。祝你好运。

撰写回答